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

Go to the documentation of this file.
00001 //-*- C++ -*-
00011 // $Id: Base_Packet.h 10 2007-06-06 20:58:33Z eddyxu $
00012 
00013 #ifndef QLIB_ACE_BASE_PACKET_H
00014 #define QLIB_ACE_BASE_PACKET_H
00015 
00016 #include <ace/OS.h>
00017 
00018 class ACE_Message_Block;
00019 
00020 namespace qlib {
00021 
00022         namespace ace {
00023 
00029                 template<
00030                         typename H,
00031                         typename B
00032                         >
00033                 struct Base_Packet {
00034                         typedef H header_type;
00035                         typedef header_type* header_pointer;
00036                         typedef B body_type;
00037                         typedef body_type* body_pointer;
00038                         
00039                         Base_Packet() : header_(0), body_(0);
00040                         Base_Packet(header_pointer hdr, body_pointer bd): header_(hdr), body_(bd) {}
00041                         virtual ~Base_Packet() { 
00042                                 delete body_;
00043                                 delete header_;
00044                         }
00045         
00046                         header_pointer header(void) { return header_; }
00047                         void header(header_pointer hdr) { header_ = hdr; }
00048                         body_pointer body(void) { return body_; }
00049                         void body(body_pointer bd) { body_ = bd; }
00050                 public:
00051                         virtual int parse(const void *buffer, ssize_t length) = 0;
00052                         virtual int parse(ACE_Message_Block *mb, ssize_t length=0) = 0; 
00053 
00054                         ACE_Message_Block* to_mb(void);
00055                 private:
00056                         header_type * header_;
00057                         body_type * body_;
00058                 };
00059 
00060         } // ace
00061 
00062 } // qlib
00063 
00064 #endif /* QLIB_ACE_BASE_PACKET_H */

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