00001
00002
00006
00007
00008
00009 #ifndef _POBOX_H_
00010 #define _POBOX_H_
00011 #include<qobject.h>
00012 #include<string>
00013 #include<list>
00014 #include<DTime.h>
00015 #include<POAddress.h>
00016 #include<POBoxIF.h>
00017
00018 using namespace std;
00019 class PostOffice;
00020 class POMessage;
00021
00022 class PEXPR_API POBox : public QObject, public POBoxIF
00023 {
00024 Q_OBJECT
00025 public:
00026 POBox( const string& name, PostOffice* po );
00027 ~POBox();
00028
00029 const POMessage* popMessage();
00030
00031 void setQueueState( bool state = true ) { m_queuestate = state; }
00032 bool getQueueState()const { return m_queuestate; }
00033
00034 string getName()const { return m_name; }
00035 bool hasMessages( bool check_now = false )const;
00036
00037 PostOffice* getPostOffice()const{ return m_po; }
00038
00039 bool sendTextMsg( const POAddress& adr, const char* format, ... );
00040
00041 bool sendMessage( POMessage* msg, const POAddress& adr,
00042 bool send_now = false );
00043 const POMessage* sendBlockingMessage( POMessage* msg,
00044 const POAddress& adr,
00045 const DTime& timeout = DTime(2,0) );
00046
00047 void joinGroup( const POAddress& groupadr, bool create = false );
00048 void leaveGroup( const POAddress& groupadr );
00049
00050 public slots:
00051 void addMessage( const POMessage* msg );
00052
00053 signals:
00057 void messageArrived();
00058
00060 void messageArrived( const POMessage* msg );
00061 void messageSent ( const POMessage* msg );
00062
00063 private:
00064 list<const POMessage*> m_inbox;
00065 string m_name;
00066 PostOffice* m_po;
00067 bool m_queuestate;
00068 };
00069
00070 #endif