00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef DATAGRAMQUEUE_H
00016 #define DATAGRAMQUEUE_H
00017
00018 #include "pandabase.h"
00019
00020 #include "netDatagram.h"
00021 #include "pmutex.h"
00022 #include "conditionVarFull.h"
00023 #include "pdeque.h"
00024
00025
00026
00027
00028
00029
00030
00031 class EXPCL_PANDA_NET DatagramQueue {
00032 public:
00033 DatagramQueue();
00034 ~DatagramQueue();
00035 void shutdown();
00036
00037 bool insert(const NetDatagram &data, bool block = false);
00038 bool extract(NetDatagram &result);
00039
00040 void set_max_queue_size(int max_size);
00041 int get_max_queue_size() const;
00042 int get_current_queue_size() const;
00043
00044 private:
00045 Mutex _cvlock;
00046 ConditionVarFull _cv;
00047
00048 typedef pdeque<NetDatagram> QueueType;
00049 QueueType _queue;
00050 bool _shutdown;
00051 int _max_queue_size;
00052 };
00053
00054 #endif
00055