/Users/eddyxu/work/quiplib/ace/srcs/Packets.h

Go to the documentation of this file.
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 

Generated on Fri Jun 8 22:49:19 2007 for qlib::ace by  doxygen 1.5.1