00001
00002
00005
00006
00007
00008 #ifndef _POMESSAGE_H_
00009 #define _POMESSAGE_H_
00010 #include<Packable.h>
00011 #include<POAddress.h>
00012 #include<POTypes.h>
00013 #include<string>
00014 using namespace std;
00015
00016
00017 class PEXPR_API POMessage : impliments Packable
00018 {
00019 public:
00020 POMessage();
00021 POMessage( const POMessage& cpy );
00022 virtual ~POMessage();
00023 virtual string messageType()const { return "POMessage"; };
00024
00025 void setTag( int id ){ m_tag = id; }
00026 void setSource( const POAddress& source );
00027 void setDestination( const POAddress& dest );
00028
00029 POInt getTag()const { return m_tag; }
00030 POAddress getSource()const;
00031 POAddress getDestination()const;
00032 string getPackedType()const{ return m_derivedtype.val(); }
00033
00034 virtual POMessage* clone()const;
00035
00036
00037
00038
00039 int packsize()const;
00040 int pack( char* buf )const;
00041 int unpack( char* buf );
00042
00043 private:
00044 POAddress m_source;
00045 POAddress m_destination;
00046 POString m_derivedtype;
00047 POInt m_tag;
00048 };
00049 #include<POMessageFactory.h>
00050 #endif