00001 //-*- C++ -*- 00002 //-------------------------------------------------------------- 00014 //--------------------------------------------------------------- 00015 00016 00017 #ifndef QLIB_ACE_PACKET_H 00018 #define QLIB_ACE_PACKET_H 00019 00020 #include <string> 00021 00022 #include <ace/Basic_Types.h> 00023 00024 // forward delariation 00025 class ACE_Message_Block; 00026 00027 namespace qlib { 00028 00029 namespace ace { 00031 class Qlib_Packet; 00032 00033 class Packet_Factory { 00034 public: 00035 enum Packet_Type { UNKNOWN_PACKET, XML_PACKET, DATA_PACKET }; 00036 typedef Packet_Type packet_type; 00037 public: 00038 static Qlib_Packet* create(); 00039 private: 00040 Packet_Factory(); 00041 ~Packet_Factory(); 00042 }; 00043 00044 template< 00045 char * sign = "qlib", 00046 size_t sign_len = 4 00047 > 00048 class Packet_Header { 00049 public: 00050 enum TYPE { UNKOWN_PACKET, XML_PACKET, DATA_PACKET }; 00051 typedef TYPE packet_type; 00052 00053 Packet_Header(); 00054 Packet_Header(ACE_UINT16 ver, packet_type pt, ACE_UINT64 len); 00055 00056 public: 00057 int parse(const void *buffer, ACE_UINT64 len); 00058 int parse(ACE_Message_Block *mb, ACE_UINT64 len); 00059 00060 packet_type type(void) { return type_; } 00061 ACE_UINT16 version(void) { return version_; } 00062 ACE_UINT64 length(void) { return length_; } 00063 00064 ACE_Message_Block *to_mb(void); 00065 ACE_UINT64 *to_buffer(void *buffer); 00066 private: 00067 ACE_UINT16 version_; 00068 ACE_UINT64 length_; 00069 packet_type type_; 00070 }; 00071 00072 class XML_Body { 00073 00074 }; 00075 00076 class Data_Body { 00077 00078 }; 00079 00081 class XML_Packet { 00082 00083 }; 00084 00086 class Data_Packet { 00087 00088 }; 00089 00090 } // ace 00091 00092 }// qlib 00093 00094 #endif /* QLIB_ACE_PACKET_H */ 00095 00096