00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef DATAGRAMGENERATORNET_H
00016 #define DATAGRAMGENERATORNET_H
00017
00018 #include "pandabase.h"
00019
00020 #include "datagramGenerator.h"
00021 #include "connectionReader.h"
00022 #include "queuedReturn.h"
00023 #include "pmutex.h"
00024 #include "conditionVar.h"
00025
00026 EXPORT_TEMPLATE_CLASS(EXPCL_PANDA_NET, EXPTP_PANDA_NET, QueuedReturn<Datagram>);
00027
00028
00029
00030
00031
00032
00033
00034
00035 class EXPCL_PANDA_NET DatagramGeneratorNet : public DatagramGenerator, public ConnectionReader, public QueuedReturn<Datagram> {
00036 PUBLISHED:
00037 DatagramGeneratorNet(ConnectionManager *manager, int num_threads);
00038 virtual ~DatagramGeneratorNet();
00039
00040
00041 virtual bool get_datagram(Datagram &data);
00042 virtual bool is_eof();
00043 virtual bool is_error();
00044
00045 protected:
00046
00047 virtual void receive_datagram(const NetDatagram &datagram);
00048
00049 Mutex _dg_lock;
00050 ConditionVar _dg_received;
00051 ConditionVar _dg_processed;
00052 };
00053
00054 #include "datagramGeneratorNet.I"
00055
00056 #endif
00057