#include <cluster/Packets/Header.h>
Public Member Functions | |
| Header () | |
| Directly read the needed header data from socket(blocking), and parse the header. | |
| void | readData (vpr::SocketStream *stream) throw ( cluster::ClusterException ) |
| 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 (const vpr::Uint32 length) |
| vpr::Uint32 | getFrame () |
| virtual void | printData (const int debug_level) |
Static Public Attributes | |
| static const unsigned short | RIM_PACKET = 400 |
| static const unsigned short | RIM_DATA_PACKET = 401 |
| static const unsigned short | RIM_DEVICE_REQ = 402 |
| static const unsigned short | RIM_DEVICE_ACK = 403 |
| static const unsigned short | RIM_CONNECTION_REQ = 404 |
| static const unsigned short | RIM_CONNECTION_ACK = 405 |
| static const unsigned short | RIM_SYNC_REQ = 406 |
| static const unsigned short | RIM_SYNC_ACK = 407 |
| static const unsigned short | RIM_APPDATA_REQ = 408 |
| static const unsigned short | RIM_APPDATA_ACK = 409 |
| static const unsigned short | RIM_END_BLOCK = 410 |
| static const unsigned short | RIM_START_BLOCK = 411 |
| static 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 |
Definition at line 53 of file Header.h.
| cluster::Header::Header | ( | ) | [inline] |
Directly read the needed header data from socket(blocking), and parse the header.
Definition at line 75 of file Header.h.
00075 : mPacketReader(NULL), mPacketWriter(NULL) 00076 {;}
| cluster::Header::Header | ( | vpr::Uint16 | RIM_code, | |
| vpr::Uint16 | packet_type, | |||
| vpr::Uint32 | packet_length, | |||
| vpr::Uint32 | frame | |||
| ) |
Definition at line 41 of file Header.cpp.
References mFrame, mPacketLength, mPacketType, and mRIMCode.
00042 : mPacketReader(NULL), mPacketWriter(NULL) 00043 { 00044 mRIMCode = RIM_code; 00045 mPacketType = packet_type; 00046 mPacketLength = packet_length; 00047 mFrame = frame; 00048 }
| virtual cluster::Header::~Header | ( | ) | [inline, virtual] |
Definition at line 83 of file Header.h.
00084 { 00085 if ( NULL != mPacketReader ) 00086 { 00087 delete mPacketReader; 00088 mPacketReader = NULL; 00089 } 00090 if ( NULL != mPacketWriter ) 00091 { 00092 delete mPacketWriter; 00093 mPacketWriter = NULL; 00094 } 00095 }
| void cluster::Header::readData | ( | vpr::SocketStream * | stream | ) | throw ( cluster::ClusterException ) |
Definition at line 50 of file Header.cpp.
References gadgetDBG_RIM(), and RIM_PACKET_HEAD_SIZE.
Referenced by gadget::Node::recvPacket().
00051 { 00052 vprASSERT( NULL != stream && "Can not create a Header using a NULL SocketStream" ); 00053 00054 // - Is stream is a valid SocketStream? 00055 // - Read in the packet from the socket 00056 // - Set the BufferObjectReader and BufferObjectWriter to use mData <====We only need BufferObjectReader 00057 if (NULL == stream) 00058 { 00059 vprDEBUG( gadgetDBG_RIM, vprDBG_CONFIG_LVL ) 00060 << clrOutBOLD( clrRED, "ERROR:" ) 00061 << " SocketSteam is NULL" 00062 << std::endl << vprDEBUG_FLUSH; 00063 00064 throw cluster::ClusterException("Header::Header() - SocketStream is NULL"); 00065 } 00066 else 00067 { 00068 vpr::Uint32 bytes_read; 00069 00070 vpr::ReturnStatus status = 00071 stream->readn( mData, Header::RIM_PACKET_HEAD_SIZE, bytes_read ); 00072 00073 if ( status != vpr::ReturnStatus::Succeed || 00074 bytes_read != RIM_PACKET_HEAD_SIZE ) 00075 { 00076 vprDEBUG( gadgetDBG_RIM, vprDBG_CONFIG_LVL ) 00077 << clrOutBOLD( clrRED, "ERROR:" ) 00078 << "Header::readData() - Could not read the header!" 00079 << std::endl << vprDEBUG_FLUSH; 00080 00081 stream->close(); 00082 delete stream; 00083 stream = NULL; 00084 00085 if ( status != vpr::ReturnStatus::Succeed ) 00086 { 00087 throw cluster::ClusterException( "Header::Header() - Could not read the header!" ); 00088 } 00089 else 00090 { 00091 throw cluster::ClusterException( "Header::Header() - Bytes Read was lower than RIM_PACKET_HEAD_SIZE" ); 00092 } 00093 } 00094 00095 if ( bytes_read != RIM_PACKET_HEAD_SIZE ) 00096 { 00097 vprDEBUG( gadgetDBG_RIM, vprDBG_CONFIG_LVL ) 00098 << clrOutBOLD( clrRED, "ERROR:" ) 00099 << "Header::Header Something is seriously wrong here!\n" 00100 << "We only read: " << bytes_read << " bytes for the header\n" 00101 << "When we need " << RIM_PACKET_HEAD_SIZE << " bytes!" << std::endl 00102 << vprDEBUG_FLUSH; 00103 exit(0); 00104 } 00105 00106 mPacketReader = new vpr::BufferObjectReader( &mData ); 00107 parseHeader(); 00108 } 00109 00110 }
| void cluster::Header::serializeHeader | ( | ) |
Definition at line 112 of file Header.cpp.
References mData, mFrame, mPacketLength, mPacketType, mPacketWriter, and mRIMCode.
Referenced by cluster::SyncRequest::serialize(), cluster::SyncAck::serialize(), cluster::StartBlock::serialize(), cluster::EndBlock::serialize(), cluster::DeviceRequest::serialize(), cluster::DeviceAck::serialize(), cluster::DataPacket::serialize(), cluster::ConnectionRequest::serialize(), cluster::ConnectionAck::serialize(), cluster::ApplicationDataRequest::serialize(), cluster::ApplicationDataAck::serialize(), and cluster::ApplicationDataServer::serializeAndSend().
00113 { 00114 mPacketWriter = new vpr::BufferObjectWriter(&mData); 00115 mPacketWriter->getData()->clear(); 00116 mPacketWriter->setCurPos( 0 ); 00117 00118 // -Write all packet header information to the base Header class 00119 00120 00121 // std::cout << "Head Starting at Position: " << mPacketWriter->getCurPos() << std::endl; 00122 mPacketWriter->writeUint16( mRIMCode ); 00123 // std::cout << "Write RIMCode: " << mRIMCode << std::endl; 00124 // std::cout << "Current Position: " << mPacketWriter->getCurPos() << std::endl; 00125 00126 mPacketWriter->writeUint16( mPacketType ); 00127 // std::cout << "Write PacketType: " << mPacketType << std::endl; 00128 // std::cout << "Current Position: " << mPacketWriter->getCurPos() << std::endl; 00129 00130 mPacketWriter->writeUint32( mFrame ); 00131 // std::cout << "Write Frame: " << mFrame << std::endl; 00132 // std::cout << "Current Position: " << mPacketWriter->getCurPos() << std::endl; 00133 00134 mPacketWriter->writeUint32( mPacketLength ); 00135 // std::cout << "Write Packet Length: " << mPacketLength << std::endl; 00136 // std::cout << "Current Position: " << mPacketWriter->getCurPos() << std::endl; 00137 }
| void cluster::Header::parseHeader | ( | ) |
Definition at line 139 of file Header.cpp.
References gadgetDBG_RIM(), mFrame, mPacketLength, mPacketReader, mPacketType, mRIMCode, and RIM_PACKET.
00140 { 00141 // *Now that we have recieved the correct number 00142 // of bytes from the socket(RIM_PACKET_HEAD_SIZE) 00143 00144 // -Parse the new data using a BufferObjectReader 00145 // -Is this a valid RIM packet? 00146 // -If not exit immediately 00147 00148 //std::cout << "Head Starting at Position: " << mPacketReader->getCurPos() << std::endl; 00149 00150 mRIMCode = mPacketReader->readUint16(); 00151 // std::cout << "Read RIMCode: " << mRIMCode << std::endl; 00152 // std::cout << "Current Position: " << mPacketReader->getCurPos() << std::endl; 00153 mPacketType = mPacketReader->readUint16(); 00154 // std::cout << "Read PacketType: " << mPacketType << std::endl; 00155 // std::cout << "Current Position: " << mPacketReader->getCurPos() << std::endl; 00156 mFrame = mPacketReader->readUint32(); 00157 // std::cout << "Read Frame#: " << mFrame << std::endl; 00158 // std::cout << "Current Position: " << mPacketReader->getCurPos() << std::endl; 00159 mPacketLength = mPacketReader->readUint32(); 00160 // std::cout << "Read Packet Length: " << mPacketLength << std::endl; 00161 // std::cout << "Current Position: " << mPacketReader->getCurPos() << std::endl; 00162 00163 if ( RIM_PACKET != mRIMCode ) 00164 { 00165 vprDEBUG( gadgetDBG_RIM, vprDBG_CONFIG_LVL ) 00166 << clrOutBOLD( clrRED, "ERROR:" ) 00167 << " This Packet is not a valid RIM Packet!!" 00168 << " RIMCode: " << mRIMCode << " is not valid!" 00169 << std::endl << vprDEBUG_FLUSH; 00170 00171 throw cluster::ClusterException( "Header::parseHeader() - Invalid packet header!" ); 00172 } 00173 }
| vpr::ReturnStatus cluster::Header::send | ( | vpr::SocketStream * | socket | ) |
Definition at line 175 of file Header.cpp.
References mData, and RIM_PACKET_HEAD_SIZE.
Referenced by gadget::Node::send().
00176 { 00177 vprASSERT( NULL != socket && "Socket is NULL" ); 00178 00179 // -Send the data in this packet 00180 vpr::Uint32 bytes_written; 00181 00182 vpr::ReturnStatus status = socket->send( mData, RIM_PACKET_HEAD_SIZE, bytes_written ); 00183 return status; 00184 00185 }
| void cluster::Header::dump | ( | ) |
Definition at line 187 of file Header.cpp.
References mData.
Referenced by cluster::Packet::dump().
00188 { 00189 std::cout << "Dumping Header(" << mData.size() << " bytes): "; 00190 for ( std::vector<vpr::Uint8>::iterator i = mData.begin(); 00191 i!= mData.end(); i++ ) 00192 { 00193 std::cout << (int)*i << " "; 00194 } 00195 std::cout << std::endl; 00196 }
| vpr::Uint16 cluster::Header::getRIMCode | ( | ) | [inline] |
| vpr::Uint16 cluster::Header::getPacketType | ( | ) | [inline] |
Definition at line 110 of file Header.h.
Referenced by cluster::Packet::getPacketType(), and gadget::Node::recvPacket().
00111 { 00112 return mPacketType; 00113 }
| vpr::Uint32 cluster::Header::getPacketLength | ( | ) | [inline] |
Definition at line 115 of file Header.h.
Referenced by cluster::DataPacket::parse(), gadget::Node::recvPacket(), and gadget::Node::send().
00116 { 00117 return mPacketLength; 00118 }
| void cluster::Header::setPacketLength | ( | const vpr::Uint32 | length | ) | [inline] |
Definition at line 120 of file Header.h.
Referenced by cluster::ApplicationDataServer::serializeAndSend().
00121 { 00122 mPacketLength = length; 00123 }
| vpr::Uint32 cluster::Header::getFrame | ( | ) | [inline] |
| void cluster::Header::printData | ( | const int | debug_level | ) | [virtual] |
Definition at line 198 of file Header.cpp.
References gadgetDBG_RIM(), mFrame, mPacketLength, mPacketType, and mRIMCode.
Referenced by cluster::Packet::printData().
00199 { 00200 vprDEBUG_BEGIN( gadgetDBG_RIM, debug_level ) 00201 << clrOutBOLD( clrYELLOW, "====== Packet Header ======" ) 00202 << std::endl << 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 vprDEBUG_END( gadgetDBG_RIM, debug_level ) 00218 << clrOutBOLD( clrYELLOW, "===========================" ) 00219 << std::endl << vprDEBUG_FLUSH; 00220 }
const unsigned short cluster::Header::RIM_PACKET = 400 [static] |
Definition at line 56 of file Header.h.
Referenced by cluster::ApplicationDataAck::ApplicationDataAck(), cluster::ApplicationDataRequest::ApplicationDataRequest(), cluster::ConnectionAck::ConnectionAck(), cluster::ConnectionRequest::ConnectionRequest(), cluster::DataPacket::DataPacket(), cluster::DeviceAck::DeviceAck(), cluster::DeviceRequest::DeviceRequest(), cluster::EndBlock::EndBlock(), parseHeader(), cluster::StartBlock::StartBlock(), cluster::SyncAck::SyncAck(), and cluster::SyncRequest::SyncRequest().
const unsigned short cluster::Header::RIM_DATA_PACKET = 401 [static] |
Definition at line 57 of file Header.h.
Referenced by cluster::DataPacket::DataPacket(), cluster::DataPacket::getPacketFactoryType(), gadget::RemoteInputManager::handlePacket(), cluster::ApplicationDataManager::handlePacket(), and gadget::Node::send().
const unsigned short cluster::Header::RIM_DEVICE_REQ = 402 [static] |
Definition at line 58 of file Header.h.
Referenced by cluster::DeviceRequest::DeviceRequest(), cluster::DeviceRequest::getPacketFactoryType(), and gadget::RemoteInputManager::handlePacket().
const unsigned short cluster::Header::RIM_DEVICE_ACK = 403 [static] |
Definition at line 59 of file Header.h.
Referenced by cluster::DeviceAck::DeviceAck(), cluster::DeviceAck::getPacketFactoryType(), and gadget::RemoteInputManager::handlePacket().
const unsigned short cluster::Header::RIM_CONNECTION_REQ = 404 [static] |
Definition at line 60 of file Header.h.
Referenced by cluster::ConnectionRequest::ConnectionRequest(), cluster::ConnectionRequest::getPacketFactoryType(), and gadget::AbstractNetworkManager::handlePacket().
const unsigned short cluster::Header::RIM_CONNECTION_ACK = 405 [static] |
Definition at line 61 of file Header.h.
Referenced by cluster::ConnectionAck::ConnectionAck(), cluster::ConnectionAck::getPacketFactoryType(), and gadget::AbstractNetworkManager::handlePacket().
const unsigned short cluster::Header::RIM_SYNC_REQ = 406 [static] |
Definition at line 62 of file Header.h.
Referenced by cluster::SyncRequest::getPacketFactoryType(), and cluster::SyncRequest::SyncRequest().
const unsigned short cluster::Header::RIM_SYNC_ACK = 407 [static] |
Definition at line 63 of file Header.h.
Referenced by cluster::SyncAck::getPacketFactoryType(), and cluster::SyncAck::SyncAck().
const unsigned short cluster::Header::RIM_APPDATA_REQ = 408 [static] |
Definition at line 64 of file Header.h.
Referenced by cluster::ApplicationDataRequest::ApplicationDataRequest(), cluster::ApplicationDataRequest::getPacketFactoryType(), and cluster::ApplicationDataManager::handlePacket().
const unsigned short cluster::Header::RIM_APPDATA_ACK = 409 [static] |
Definition at line 65 of file Header.h.
Referenced by cluster::ApplicationDataAck::ApplicationDataAck(), cluster::ApplicationDataAck::getPacketFactoryType(), and cluster::ApplicationDataManager::handlePacket().
const unsigned short cluster::Header::RIM_END_BLOCK = 410 [static] |
Definition at line 66 of file Header.h.
Referenced by cluster::EndBlock::EndBlock(), cluster::EndBlock::getPacketFactoryType(), and gadget::AbstractNetworkManager::handlePacket().
const unsigned short cluster::Header::RIM_START_BLOCK = 411 [static] |
Definition at line 67 of file Header.h.
Referenced by cluster::StartBlock::getPacketFactoryType(), cluster::StartBarrierPlugin::handlePacket(), and cluster::StartBlock::StartBlock().
const unsigned short cluster::Header::RIM_PACKET_HEAD_SIZE = 12 [static] |
Definition at line 68 of file Header.h.
Referenced by cluster::ApplicationDataAck::ApplicationDataAck(), cluster::ApplicationDataRequest::ApplicationDataRequest(), cluster::ConnectionAck::ConnectionAck(), cluster::ConnectionRequest::ConnectionRequest(), cluster::DataPacket::DataPacket(), cluster::DeviceAck::DeviceAck(), cluster::DeviceRequest::DeviceRequest(), cluster::EndBlock::EndBlock(), cluster::DataPacket::parse(), readData(), gadget::Node::recvPacket(), gadget::Node::send(), send(), cluster::ApplicationDataServer::serializeAndSend(), cluster::StartBlock::StartBlock(), cluster::SyncAck::SyncAck(), cluster::SyncRequest::SyncRequest(), and gadget::DeviceServer::updateLocalData().
vpr::BufferObjectReader* cluster::Header::mPacketReader [protected] |
vpr::BufferObjectWriter* cluster::Header::mPacketWriter [protected] |
std::vector<vpr::Uint8> cluster::Header::mData [protected] |
vpr::Uint16 cluster::Header::mRIMCode [protected] |
Definition at line 136 of file Header.h.
Referenced by Header(), parseHeader(), printData(), and serializeHeader().
vpr::Uint16 cluster::Header::mPacketType [protected] |
Definition at line 137 of file Header.h.
Referenced by Header(), parseHeader(), printData(), and serializeHeader().
vpr::Uint32 cluster::Header::mPacketLength [protected] |
Definition at line 138 of file Header.h.
Referenced by Header(), parseHeader(), printData(), and serializeHeader().
vpr::Uint32 cluster::Header::mFrame [protected] |
Definition at line 139 of file Header.h.
Referenced by Header(), parseHeader(), printData(), and serializeHeader().
1.5.1