lmsg/Buffer.hh

00001 /* -*- mode: c++; c-basic-offset: 4; -*- */
00002 #ifndef LMSG_BUFFER_HH
00003 #define LMSG_BUFFER_HH
00004 #include "lmsg/MsgHeader.hh"
00005 
00006 namespace lmsg {
00007     class BufferPool;
00008     class MsgHeader;
00009 
00016     class Buffer {
00017     public:
00026         Buffer(size_type size, char* data=0);
00027 
00031         ~Buffer(void);
00032 
00033         //------------------------------ Accessors
00034 
00039         const char* getBuffer(void) const;
00040 
00045         const char* getDataAddr(void) const;
00046 
00052         const MsgHeader& getHeader(void) const;
00053 
00058         size_type   getLength(void) const;
00059 
00064         size_type   getSize(void) const;
00065 
00070         size_type   getDataSize(void) const;
00071 
00076         size_type   getDataLength(void) const;
00077 
00078         //------------------------------ Mutators
00083         char* getBuffer(void);
00084 
00089         char* getDataAddr(void);
00090 
00091 
00097         MsgHeader& getHeader(void);
00098 
00102         void Return(void);
00103 
00108         void setLength(size_type length);
00109 
00115         void setDataLength(size_type length);
00116 
00121         void setPool(BufferPool& pool);
00122   private:
00123     size_type   mSize;
00124     size_type   mLength;
00125     BufferPool* mPool;
00126     char*       mData;
00127     bool        mLocalData;
00128   }; // Buffer class
00129 } // namespace lmsg
00130 
00131 inline const char* 
00132 lmsg::Buffer::getBuffer(void) const {
00133     return mData;
00134 }
00135 
00136 inline char*
00137 lmsg::Buffer::getBuffer(void) {
00138     return mData;
00139 }
00140 
00141 inline const char* 
00142 lmsg::Buffer::getDataAddr(void) const {
00143     return mData + sizeof(MsgHeader);
00144 }
00145 
00146 inline char*
00147 lmsg::Buffer::getDataAddr(void) {
00148     return mData + sizeof(MsgHeader);
00149 }
00150 
00151 inline lmsg::size_type
00152 lmsg::Buffer::getDataLength(void) const {
00153     return mLength - sizeof(MsgHeader);
00154 }
00155 
00156 inline lmsg::size_type
00157 lmsg::Buffer::getDataSize(void) const {
00158     return mSize - sizeof(MsgHeader);
00159 }
00160 
00161 inline const lmsg::MsgHeader& 
00162 lmsg::Buffer::getHeader(void) const {
00163     return *(const MsgHeader*)mData;
00164 }
00165 
00166 inline lmsg::MsgHeader& 
00167 lmsg::Buffer::getHeader(void) {
00168     return *(MsgHeader*)mData;
00169 }
00170 
00171 inline lmsg::size_type
00172 lmsg::Buffer::getLength(void) const {
00173     return mLength;
00174 }
00175 
00176 inline lmsg::size_type
00177 lmsg::Buffer::getSize(void) const {
00178     return mSize;
00179 }
00180 
00181 #endif // LMSG_BUFFER_HH

Generated on Sun Mar 8 19:20:49 2009 for dmt by  doxygen 1.5.4