00001 /******************************************************************************* 00002 * ALMA - Atacama Large Millimiter Array 00003 * (c) National Radio Astronomy Observatory, 2009 00004 * Copyright by NRAO (in the framework of the ALMA collaboration) 00005 * All rights reserved 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2.1 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with this library; if not, write to the Free Software 00019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00020 * 00021 * 00022 * "@(#) $Id:" 00023 */ 00024 00025 00026 #ifndef _NC_CIRCULAR_QUEUE_H_ 00027 #define _NC_CIRCULAR_QUEUE_H_ 00028 00029 #include <deque> 00030 #include <iostream> 00031 #include <orbsvcs/CosNotificationC.h> 00032 00033 namespace nc{ 00039 class CircularQueue{ 00040 private: 00041 std::deque<CosNotification::StructuredEvent> queue; 00042 unsigned int length; 00043 const unsigned int max_size; 00044 00045 public: 00052 CircularQueue(unsigned int size = 100); 00053 00063 void push(CosNotification::StructuredEvent e); 00064 00068 void clear(); 00069 00076 CosNotification::StructuredEvent *pop(); 00077 }; 00078 00079 class EventDroppedException: std::exception 00080 { 00081 }; 00082 } 00083 00084 #endif
1.6.2