00001 #ifndef __NQPACKETQUEUE_H_INCLUDED__
00002 #define __NQPACKETQUEUE_H_INCLUDED__
00003
00004 #include "PlatformSW.h"
00005 #include "NQLockMechanism.h"
00006 #include "NQDeclarations.h"
00007 #include "NQMessage.h"
00008
00009
00010
00011
00012
00025 class CNQPacketQueue : public CNQLockMechanism
00026 {
00027 friend class CNQMessage;
00028 public:
00029 CNQPacketQueue();
00030 virtual ~CNQPacketQueue();
00031
00032 bool setQueueMaxsize( INT32 maxsize, UINT32 &lasterr );
00033 UINT32 getLastError();
00034
00035
00036 bool pop_front( CNQMessage **obj, UINT32 &lasterr);
00037 bool push_back ( const CNQMessage *obj, UINT32 &lasterr );
00038 bool remove_elem( UINT16 requestid, UINT32 &lasterr);
00039 bool find_elem( UINT16 requestid, CNQMessage **obj, UINT32 &lasterr );
00040 bool find_and_remove_elem( UINT16 requestid, CNQMessage **obj, UINT32 &lasterr );
00041 int size( UINT32 &lasterr );
00042 bool find_elem_ack_and_signal( const CNQMessage &aAckPacket, UINT32 &lasterr );
00043 bool find_and_remove_passed_elem( CNQMessage *obj, UINT32 &lasterr );
00044
00045
00046
00047 bool setQueueMaxsize( INT32 maxsize);
00048 bool pop_front( CNQMessage **obj);
00049 bool push_back ( const CNQMessage* obj);
00050 bool remove_elem( UINT16 requestid);
00051 bool find_elem( UINT16 requestid, CNQMessage **obj);
00052 bool find_and_remove_elem( UINT16 requestid, CNQMessage **obj);
00053 int size();
00054 bool find_elem_ack_and_signal( const CNQMessage &aAckPacket);
00055 bool find_and_remove_passed_elem( CNQMessage *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 // __NQPACKETQUEUE_H_INCLUDED__