#include <Header.h>
Public Methods | |
| Header (vpr::SocketStream *stream) throw (cluster::ClusterException) | |
| Directly read the needed header data from socket(blocking), and parse the header. More... | |
| Header (vpr::Uint16 RIM_code, vpr::Uint16 packet_type, vpr::Uint32 packet_length, vpr::Uint32 frame) | |
| virtual | ~Header () |
| void | serializeHeader () |
| void | parseHeader () |
| vpr::ReturnStatus | send (vpr::SocketStream *socket) |
| void | dump () |
| vpr::Uint16 | getRIMCode () |
| vpr::Uint16 | getPacketType () |
| vpr::Uint32 | getPacketLength () |
| void | setPacketLength (vpr::Uint32 length) |
| vpr::Uint32 | getFrame () |
| virtual void | printData (int debug_level) |
Static Public Attributes | |
| const unsigned short | RIM_PACKET = 400 |
| const unsigned short | RIM_DATA_PACKET = 401 |
| const unsigned short | RIM_DEVICE_REQ = 402 |
| const unsigned short | RIM_DEVICE_ACK = 403 |
| const unsigned short | RIM_CONNECTION_REQ = 404 |
| const unsigned short | RIM_CONNECTION_ACK = 405 |
| const unsigned short | RIM_SYNC_REQ = 406 |
| const unsigned short | RIM_SYNC_ACK = 407 |
| const unsigned short | RIM_APPDATA_REQ = 408 |
| const unsigned short | RIM_APPDATA_ACK = 409 |
| const unsigned short | RIM_END_BLOCK = 410 |
| const unsigned short | RIM_START_BLOCK = 411 |
| const unsigned short | RIM_PACKET_HEAD_SIZE = 12 |
Protected Attributes | |
| vpr::BufferObjectReader * | mPacketReader |
| vpr::BufferObjectWriter * | mPacketWriter |
| std::vector< vpr::Uint8 > | mData |
| vpr::Uint16 | mRIMCode |
| vpr::Uint16 | mPacketType |
| vpr::Uint32 | mPacketLength |
| vpr::Uint32 | mFrame |
|
|
Directly read the needed header data from socket(blocking), and parse the header.
Definition at line 53 of file Header.cpp. References gadgetDBG_RIM.
00054 {
00055 vprASSERT(NULL != stream && "Can not create a Header using a NULL SocketStream");
00056
00057 // -Is stream is a valid SocketStream?
00058 // -Read in the packet from the socket
00059 // -Set the BufferObjectReader and BufferObjectWriter to use mData <====We only need BufferObjectReader
00060 if (stream != NULL)
00061 {
00062 vpr::Uint32 bytes_read;
00063
00064 vpr::ReturnStatus status = stream->readn(mData,Header::RIM_PACKET_HEAD_SIZE,bytes_read);
00065
00066 if (status != vpr::ReturnStatus::Succeed || bytes_read != RIM_PACKET_HEAD_SIZE)
00067 {
00068 vprDEBUG(gadgetDBG_RIM,vprDBG_CONFIG_LVL)
00069 << clrOutBOLD(clrRED, "ERROR:")
00070 << "Header::Header Something is seriously wrong here!"
00071 << vprDEBUG_FLUSH;
00072
00073 stream->close();
00074 delete stream;
00075 stream = NULL;
00076
00077 if (status != vpr::ReturnStatus::Succeed)
00078 {
00079 throw cluster::ClusterException("Header::Header() - Could not read the header!");
00080 }
00081 else
00082 {
00083 throw cluster::ClusterException("Header::Header() - Bytes Read was lower than RIM_PACKET_HEAD_SIZE");
00084 }
00085 }
00086
00087 if (bytes_read != RIM_PACKET_HEAD_SIZE)
00088 {
00089 vprDEBUG(gadgetDBG_RIM,vprDBG_CONFIG_LVL)
00090 << clrOutBOLD(clrRED, "ERROR:")
00091 << "Header::Header Something is seriously wrong here!\n"
00092 << "We only read: " << bytes_read << " bytes for the header\n"
00093 << "When we need " << RIM_PACKET_HEAD_SIZE << " bytes!" << std::endl
00094 << vprDEBUG_FLUSH;
00095 exit(0);
00096 }
00097
00098 mPacketReader = new vpr::BufferObjectReader(&mData);
00099 mPacketWriter= new vpr::BufferObjectWriter(&mData); // <====We only need BufferObjectReader
00100 parseHeader();
00101 }
00102 else
00103 {
00104 vprDEBUG(gadgetDBG_RIM,vprDBG_CONFIG_LVL) << clrSetBOLD(clrRED)
00105 << "ERROR: SocketSteam is NULL\n" << clrRESET << vprDEBUG_FLUSH;
00106 throw std::exception();
00107 }
00108 }
|
|
||||||||||||||||||||
|
Definition at line 41 of file Header.cpp. References mData, mFrame, mPacketLength, mPacketReader, mPacketType, mPacketWriter, and mRIMCode.
00043 {
00044 //mData = new std::vector<vpr::Uint8>(RIM_PACKET_HEAD_SIZE);
00045 mPacketReader = new vpr::BufferObjectReader(&mData);
00046 mPacketWriter= new vpr::BufferObjectWriter(&mData);
00047
00048 mRIMCode = RIM_code;
00049 mPacketType = packet_type;
00050 mPacketLength = packet_length;
00051 mFrame = frame;
00052 }
|
|
|
Definition at line 83 of file Header.h.
00084 {
00085 delete mPacketReader;
00086 delete mPacketWriter;
00087 //delete mData;
00088 }
|
|
|
Definition at line 110 of file Header.cpp. References mFrame, mPacketLength, mPacketType, mPacketWriter, and mRIMCode.
00111 {
00112 mPacketWriter->getData()->clear();
00113 mPacketWriter->setCurPos(0);
00114
00115 // -Write all packet header information to the base Header class
00116
00117
00118 // std::cout << "Head Starting at Position: " << mPacketWriter->getCurPos() << std::endl;
00119 mPacketWriter->writeUint16(mRIMCode);
00120 // std::cout << "Write RIMCode: " << mRIMCode << std::endl;
00121 // std::cout << "Current Position: " << mPacketWriter->getCurPos() << std::endl;
00122
00123 mPacketWriter->writeUint16(mPacketType);
00124 // std::cout << "Write PacketType: " << mPacketType << std::endl;
00125 // std::cout << "Current Position: " << mPacketWriter->getCurPos() << std::endl;
00126
00127 mPacketWriter->writeUint32(mFrame);
00128 // std::cout << "Write Frame: " << mFrame << std::endl;
00129 // std::cout << "Current Position: " << mPacketWriter->getCurPos() << std::endl;
00130
00131 mPacketWriter->writeUint32(mPacketLength);
00132 // std::cout << "Write Packet Length: " << mPacketLength << std::endl;
00133 // std::cout << "Current Position: " << mPacketWriter->getCurPos() << std::endl;
00134 }
|
|
|
Definition at line 136 of file Header.cpp. References gadgetDBG_RIM, mFrame, mPacketLength, mPacketReader, mPacketType, mRIMCode, and RIM_PACKET.
00137 {
00138 // *Now that we have recieved the correct number
00139 // of bytes from the socket(RIM_PACKET_HEAD_SIZE)
00140
00141 // -Parse the new data using a BufferObjectReader
00142 // -Is this a valid RIM packet?
00143 // -If not exit immediately
00144
00145 //std::cout << "Head Starting at Position: " << mPacketWriter->getCurPos() << std::endl;
00146
00147 mRIMCode = mPacketReader->readUint16();
00148 // std::cout << "Read RIMCode: " << mRIMCode << std::endl;
00149 // std::cout << "Current Position: " << mPacketReader->getCurPos() << std::endl;
00150 mPacketType = mPacketReader->readUint16();
00151 // std::cout << "Read PacketType: " << mPacketType << std::endl;
00152 // std::cout << "Current Position: " << mPacketReader->getCurPos() << std::endl;
00153 mFrame = mPacketReader->readUint32();
00154 // std::cout << "Read Frame#: " << mFrame << std::endl;
00155 // std::cout << "Current Position: " << mPacketReader->getCurPos() << std::endl;
00156 mPacketLength = mPacketReader->readUint32();
00157 // std::cout << "Read Packet Length: " << mPacketLength << std::endl;
00158 // std::cout << "Current Position: " << mPacketReader->getCurPos() << std::endl;
00159
00160 // Change to a vprASSERT
00161 if (mRIMCode != RIM_PACKET)
00162 {
00163 vprDEBUG(gadgetDBG_RIM,vprDBG_CONFIG_LVL) << clrSetBOLD(clrRED)
00164 << "ERROR: This Packet is not a valid RIM Packet!!\n"
00165 << "RIMCode: " << mRIMCode << " is not valid!"
00166 << "\n\nApplication Exiting immediately!!" << clrRESET << vprDEBUG_FLUSH;
00167 exit(0);
00168 }
00169 }
|
|
|
Definition at line 170 of file Header.cpp. References mData, and RIM_PACKET_HEAD_SIZE.
00171 {
00172 vprASSERT(NULL != socket && "Socket is NULL");
00173
00174 // -Send the data in this packet
00175 vpr::Uint32 bytes_written;
00176
00177 vpr::ReturnStatus status = socket->send(mData,RIM_PACKET_HEAD_SIZE,bytes_written);
00178 return(status);
00179
00180 //if (bytes_written != mPacketLength)
00181 //{
00182 // std::cout << "Something is seriously wrong here!" << std::endl;
00183 // return(vpr::ReturnStatus::Fail);
00184 //}
00185 //return(vpr::ReturnStatus::Succeed);
00186
00187 }
|
|
|
Definition at line 188 of file Header.cpp. References mData.
|
|
|
Definition at line 94 of file Header.h.
00094 { return mRIMCode; }
|
|
|
Definition at line 95 of file Header.h.
00095 { return mPacketType; }
|
|
|
Definition at line 96 of file Header.h.
00096 { return mPacketLength; }
|
|
|
Definition at line 97 of file Header.h.
00097 { mPacketLength = length; }
|
|
|
Definition at line 98 of file Header.h.
00098 { return mFrame; }
|
|
|
Definition at line 199 of file Header.cpp. References gadgetDBG_RIM, mFrame, mPacketLength, mPacketType, and mRIMCode.
00200 {
00201 vprDEBUG_BEGIN(gadgetDBG_RIM,debug_level)
00202 << clrOutBOLD(clrYELLOW,"====== Packet Header ======\n") << vprDEBUG_FLUSH;
00203
00204 vprDEBUG(gadgetDBG_RIM,debug_level)
00205 << clrOutBOLD(clrYELLOW, "RIMCode: ") << mRIMCode
00206 << std::endl << vprDEBUG_FLUSH;
00207 vprDEBUG(gadgetDBG_RIM,debug_level)
00208 << clrOutBOLD(clrYELLOW, "PacketType: ") << mPacketType
00209 << std::endl << vprDEBUG_FLUSH;
00210 vprDEBUG(gadgetDBG_RIM,debug_level)
00211 << clrOutBOLD(clrYELLOW, "Frame #: ") << mFrame
00212 << std::endl << vprDEBUG_FLUSH;
00213 vprDEBUG(gadgetDBG_RIM,debug_level)
00214 << clrOutBOLD(clrYELLOW, "Length: ") << mPacketLength
00215 << std::endl << vprDEBUG_FLUSH;
00216
00217
00218 vprDEBUG_END(gadgetDBG_RIM,debug_level)
00219 << clrOutBOLD(clrYELLOW,"===========================\n") << vprDEBUG_FLUSH;
00220
00221
00222 /*
00223 vprDEBUG(gadgetDBG_RIM,vprDBG_CONFIG_LVL)
00224 << clrOutBOLD(clrCYAN,"\n====== Packet Header ======")
00225 << "\nRIMCode: " << mRIMCode
00226 << "\nPacketType: " << mPacketType
00227 << "\nFrame #: " << mFrame
00228 << "\nLength: " << mPacketLength << std::endl
00229 << vprDEBUG_FLUSH;
00230 */
00231 }
|
|
|
Definition at line 52 of file Header.h. Referenced by parseHeader. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 71 of file Header.h. Referenced by send. |
|
|
Definition at line 102 of file Header.h. Referenced by Header, and parseHeader. |
|
|
Definition at line 103 of file Header.h. Referenced by Header, and serializeHeader. |
|
|
|
|
|
Definition at line 106 of file Header.h. Referenced by Header, parseHeader, printData, and serializeHeader. |
|
|
Definition at line 107 of file Header.h. Referenced by Header, parseHeader, printData, and serializeHeader. |
|
|
Definition at line 108 of file Header.h. Referenced by Header, parseHeader, printData, and serializeHeader. |
|
|
Definition at line 109 of file Header.h. Referenced by Header, parseHeader, printData, and serializeHeader. |
1.2.14 written by Dimitri van Heesch,
© 1997-2002