CigiMessageBuffer.h

Go to the documentation of this file.
00001 
00042 #if !defined(_CIGI_MESSAGE_BUFFER_INCLUDED_)
00043 #define _CIGI_MESSAGE_BUFFER_INCLUDED_
00044 
00045 #include <string.h> // for memset
00046 
00047 #include "CigiTypes.h"
00048 #include "CigiVersionID.h"
00049 
00050 
00051 
00052 class CigiOutgoingMsg;
00053 class CigiIncomingMsg;
00054 class CigiBaseIGCtrl;
00055 class CigiBaseSOF;
00056 
00057 
00058 //=========================================================
00061 class CIGI_SPEC CigiMessageBuffer
00062 {
00063 public:
00064 
00065    friend class CigiOutgoingMsg;
00066    friend class CigiIncomingMsg;
00067 
00068 
00069    //==> Management
00070 
00071    //=========================================================
00074    CigiMessageBuffer(const int BufLen = 16384)
00075       : Buffer(NULL)
00076       , BufferSize(0)
00077       , FillBufferPos(NULL)
00078       , BufferFillCnt(0)
00079       , Active(false)
00080       , Locked(false)
00081       , ValidIGCtrlSOF(false)
00082       , DataPresent(false)
00083       , PackIGCtrl(NULL)
00084       , PackSOF(NULL)
00085    {
00086       // This creates a buffer that is double word aligned and
00087       //  has double word aligned size
00088 
00089       // Determine the number of bytes with a safety buffer
00090       BufferSize = BufLen +                          // Requested buffer length
00091                    (BufLen % sizeof(Cigi_uint64)) +  // make double word aligned
00092                    sizeof(Cigi_uint64);              // add a safety buffer
00093 
00094       // Allocate the message buffer
00095       Buffer = new Cigi_uint8[BufferSize];
00096 
00097       // Initialize empty buffer
00098       memset( Buffer, 0, BufferSize );
00099 
00100    }
00101 
00102    //=========================================================
00105    virtual ~CigiMessageBuffer(void)
00106    {
00107       if(Buffer != NULL)
00108       {
00109          delete [] Buffer;
00110          Buffer = NULL;
00111       }
00112    }
00113 
00114 
00115    //==> Public Accessor functions
00116 
00117    //=========================================================
00122    CigiVersionID GetCigiVersion(void) { return(CigiVersion); }
00123 
00124    //=========================================================
00129    int GetCigiMajorVersion(void) { return(CigiVersion.CigiMajorVersion); }
00130 
00131    //=========================================================
00136    int GetCigiMinorVersion(void) { return(CigiVersion.CigiMinorVersion); }
00137 
00138    //=========================================================
00143    int GetBufferSize(void) { return(BufferSize); }
00144 
00145    //=========================================================
00151    bool IsActive(void) { return(Active); }
00152 
00153    //=========================================================
00159    bool IsLocked(void) { return(Locked); }
00160 
00161    //=========================================================
00168    bool IsValidIGCtrlSOF(void) { return(ValidIGCtrlSOF); }
00169 
00170    //=========================================================
00176    bool IsDataPresent(void) { return(DataPresent); }
00177 
00178 
00179 
00180 
00181 protected:
00182 
00183    //==> Member variables
00184 
00185    //=========================================================
00189    Cigi_uint8 *Buffer;
00190 
00191    //=========================================================
00195    CigiVersionID CigiVersion;
00196 
00197    //=========================================================
00201    int BufferSize;
00202 
00203    //=========================================================
00207    Cigi_uint8 *FillBufferPos;
00208 
00209    //=========================================================
00213    int BufferFillCnt;
00214 
00215    //=========================================================
00219    bool Active;
00220 
00221    //=========================================================
00225    bool Locked;
00226 
00227    //=========================================================
00232    bool ValidIGCtrlSOF;
00233 
00234    //=========================================================
00238    bool DataPresent;
00239 
00240    //=========================================================
00245    CigiBaseIGCtrl *PackIGCtrl;
00246 
00247    //=========================================================
00252    CigiBaseSOF *PackSOF;
00253 
00254 };
00255 
00256 
00257 #endif   //  _CIGI_MESSAGE_BUFFER_INCLUDED_
00258 

Generated on Wed Apr 29 08:59:57 2009 for CCL by  doxygen 1.4.7