00001 #ifndef __PACKETQUEUE_H_INCLUDED__
00002 #define __PACKETQUEUE_H_INCLUDED__
00003
00004 #include "Platform.h"
00005 #include "LockMechanism.h"
00006 #include "Declarations.h"
00007 #include "Message.h"
00008
00009
00010
00011
00012
00025 class CPacketQueue : public CLockMechanism
00026 {
00027 friend class CMessage;
00028 public:
00029 CPacketQueue();
00030 virtual ~CPacketQueue();
00031
00032 bool setQueueMaxsize( INT32 maxsize, UINT32 &lasterr );
00033 UINT32 getLastError();
00034
00035
00036 bool pop_front( CMessage **obj, UINT32 &lasterr);
00037 bool push_back ( const CMessage *obj, UINT32 &lasterr );
00038 bool remove_elem( UINT16 requestid, UINT32 &lasterr);
00039 bool find_elem( UINT16 requestid, CMessage **obj, UINT32 &lasterr );
00040 bool find_and_remove_elem( UINT16 requestid, CMessage **obj, UINT32 &lasterr );
00041 int size( UINT32 &lasterr );
00042 bool find_elem_ack_and_signal( const CMessage &aAckPacket, UINT32 &lasterr );
00043 bool find_and_remove_passed_elem( CMessage *obj, UINT32 &lasterr );
00044
00045
00046
00047 bool setQueueMaxsize( INT32 maxsize);
00048 bool pop_front( CMessage **obj);
00049 bool push_back ( const CMessage* obj);
00050 bool remove_elem( UINT16 requestid);
00051 bool find_elem( UINT16 requestid, CMessage **obj);
00052 bool find_and_remove_elem( UINT16 requestid, CMessage **obj);
00053 int size();
00054 bool find_elem_ack_and_signal( const CMessage &aAckPacket);
00055 bool find_and_remove_passed_elem( CMessage *obj);
00056
00057 private:
00058 INT32 m_iQueueFirstElement;
00059 INT32 m_iQueueLastElement;
00060 INT32 m_iQueueNumElements;
00061
00062 VOIDP *m_pQueueValue;
00063 INT32 *m_iQueueNextElement;
00064
00065 INT32 m_iQueueMaxSize;
00066
00067 UINT32 m_iLastError;
00068
00069 };
00070
00071
00072 #endif // __PACKETQUEUE_H_INCLUDED__