00001
00042 #if !defined(_CIGI_MESSAGE_BUFFER_INCLUDED_)
00043 #define _CIGI_MESSAGE_BUFFER_INCLUDED_
00044
00045 #include <string.h>
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
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
00087
00088
00089
00090 BufferSize = BufLen +
00091 (BufLen % sizeof(Cigi_uint64)) +
00092 sizeof(Cigi_uint64);
00093
00094
00095 Buffer = new Cigi_uint8[BufferSize];
00096
00097
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
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
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