#include <OSGBinaryMessage.h>
Inheritance diagram for OSG::BinaryMessage:

Public Types | |
| typedef std::vector< UInt8 > | BufferType |
Public Member Functions | |
Constructors | |
| BinaryMessage (void) | |
| BinaryMessage (const BinaryMessage &source) | |
Destructor | |
| virtual | ~BinaryMessage (void) |
Get | |
| virtual UInt32 | getSize (void) |
| virtual MemoryHandle | getBuffer (void) |
Misc | |
| virtual void | setSize (UInt32 size) |
| void | clear (void) |
| void | reset (void) |
write message | |
| void | putUInt32 (const UInt32 value) |
| void | putInt32 (const Int32 value) |
| void | putUInt16 (const UInt16 value) |
| void | putInt16 (const Int16 value) |
| void | putUInt8 (const UInt8 value) |
| void | putInt8 (const Int8 value) |
| void | putString (const std::string &value) |
| void | putReal32 (const Real32 value) |
read message | |
| void | getUInt32 (UInt32 &value) |
| void | getInt32 (Int32 &value) |
| void | getUInt16 (UInt16 &value) |
| void | getInt16 (Int16 &value) |
| void | getUInt8 (UInt8 &value) |
| void | getInt8 (Int8 &value) |
| void | getString (std::string &value) |
| void | getReal32 (Real32 &value) |
| UInt32 | getUInt32 (void) |
| Int32 | getInt32 (void) |
| UInt16 | getUInt16 (void) |
| Int16 | getInt16 (void) |
| UInt8 | getUInt8 (void) |
| Int8 | getInt8 (void) |
| std::string | getString (void) |
| Real32 | getReal32 (void) |
Assignment | |
| BinaryMessage & | operator= (const BinaryMessage &source) |
Get | |
| Header & | getHeader (void) |
Protected Attributes | |
Member | |
| BufferType | _buffer |
| UInt32 | _pos |
Private Types | |
| typedef NetworkMessage | Inherited |
Example:
// send
BinSockMessage msg;
msg.clear(); // if not already empty
msg.putUInt32(220);
msg.putInt32 (221);
msg.putUInt16(222);
msg.putInt16 (223);
msg.putUInt8 (224);
msg.putInt8 (225);
msg.putReal32(226.0);
msg.putString("227");
socket.send(msg);
// receive
string str;
socket.recv(msg);
str = msg.getString();
msg.getString(str); // avoid one copy
Definition at line 54 of file OSGBinaryMessage.h.
| typedef std::vector<UInt8> OSG::BinaryMessage::BufferType |
Definition at line 59 of file OSGBinaryMessage.h.
typedef NetworkMessage OSG::BinaryMessage::Inherited [private] |
Definition at line 151 of file OSGBinaryMessage.h.
| BinaryMessage::BinaryMessage | ( | void | ) |
Definition at line 86 of file OSGBinaryMessage.cpp.
References clear().
00086 : 00087 NetworkMessage(), 00088 _buffer(), 00089 _pos(sizeof(Header)) 00090 { 00091 clear(); 00092 }
| BinaryMessage::BinaryMessage | ( | const BinaryMessage & | source | ) |
Copy constructor
Definition at line 96 of file OSGBinaryMessage.cpp.
00096 : 00097 NetworkMessage(source), 00098 _buffer(source._buffer), 00099 _pos(source._pos) 00100 { 00101 }
| BinaryMessage::~BinaryMessage | ( | void | ) | [virtual] |
| UInt32 BinaryMessage::getSize | ( | void | ) | [virtual] |
Implements OSG::NetworkMessage.
Definition at line 166 of file OSGBinaryMessage.cpp.
References _buffer.
00167 { 00168 return _buffer.size(); 00169 }
| MemoryHandle BinaryMessage::getBuffer | ( | void | ) | [virtual] |
Get buffer address
Implements OSG::NetworkMessage.
Definition at line 173 of file OSGBinaryMessage.cpp.
References _buffer.
00174 { 00175 if(_buffer.size()) 00176 return static_cast<MemoryHandle>(&_buffer[0]); 00177 else 00178 return 0; 00179 }
| void BinaryMessage::setSize | ( | UInt32 | size | ) | [virtual] |
Implements OSG::NetworkMessage.
Definition at line 141 of file OSGBinaryMessage.cpp.
References _buffer, and reset().
| void BinaryMessage::clear | ( | void | ) |
Clear message buffer
Definition at line 149 of file OSGBinaryMessage.cpp.
References _buffer.
Referenced by BinaryMessage(), OSG::ClusterWindow::init(), OSG::PointMCastConnection::initialize(), and OSG::GroupMCastConnection::initialize().
00150 { 00151 _buffer.resize(sizeof(Header)); 00152 }
| void BinaryMessage::reset | ( | void | ) |
Reset readpointer to the beginn of the buffer
Definition at line 156 of file OSGBinaryMessage.cpp.
References _pos.
Referenced by setSize().
00157 { 00158 _pos=sizeof(Header); 00159 }
| void OSG::BinaryMessage::putUInt32 | ( | const UInt32 | value | ) | [inline] |
Definition at line 47 of file OSGBinaryMessage.inl.
References _buffer.
Referenced by OSG::PointSockPipeline::initialize(), OSG::PointMCastConnection::initialize(), OSG::GroupMCastConnection::initialize(), and putString().
00048 { 00049 UInt32 net = osgHostToNet<UInt32>(value); 00050 _buffer.insert(_buffer.end(), 00051 reinterpret_cast<UInt8*>(&net), 00052 reinterpret_cast<UInt8*>(&net) + sizeof(net)); 00053 }
| void OSG::BinaryMessage::putInt32 | ( | const Int32 | value | ) | [inline] |
| void OSG::BinaryMessage::putUInt16 | ( | const UInt16 | value | ) | [inline] |
| void OSG::BinaryMessage::putInt16 | ( | const Int16 | value | ) | [inline] |
| void OSG::BinaryMessage::putUInt8 | ( | const UInt8 | value | ) | [inline] |
| void OSG::BinaryMessage::putInt8 | ( | const Int8 | value | ) | [inline] |
| void OSG::BinaryMessage::putString | ( | const std::string & | value | ) | [inline] |
Definition at line 90 of file OSGBinaryMessage.inl.
References _buffer, and putUInt32().
Referenced by OSG::ClusterWindow::init(), OSG::PointSockPipeline::initialize(), and OSG::GroupMCastConnection::initialize().
00091 { 00092 putUInt32(value.size()); 00093 if(value.size()) 00094 { 00095 const UInt8 *s = reinterpret_cast<const UInt8*>(value.c_str()); 00096 const UInt8 *e = s + value.size(); 00097 _buffer.insert(_buffer.end(), s, e); 00098 } 00099 }
| void OSG::BinaryMessage::putReal32 | ( | const Real32 | value | ) | [inline] |
| void OSG::BinaryMessage::getUInt32 | ( | UInt32 & | value | ) | [inline] |
Definition at line 112 of file OSGBinaryMessage.inl.
Referenced by OSG::PointSockPipeline::initialize(), OSG::PointMCastConnection::initialize(), and OSG::GroupMCastConnection::initialize().
00113 { 00114 UInt32 net = *reinterpret_cast<UInt32*>(&_buffer[_pos]); 00115 value = osgNetToHost<UInt32>(net); 00116 _pos += sizeof(net); 00117 }
| void OSG::BinaryMessage::getInt32 | ( | Int32 & | value | ) | [inline] |
| void OSG::BinaryMessage::getUInt16 | ( | UInt16 & | value | ) | [inline] |
| void OSG::BinaryMessage::getInt16 | ( | Int16 & | value | ) | [inline] |
| void OSG::BinaryMessage::getUInt8 | ( | UInt8 & | value | ) | [inline] |
| void OSG::BinaryMessage::getInt8 | ( | Int8 & | value | ) | [inline] |
| void OSG::BinaryMessage::getString | ( | std::string & | value | ) | [inline] |
Definition at line 150 of file OSGBinaryMessage.inl.
References _buffer, _pos, getUInt32(), and size.
Referenced by OSG::PointSockPipeline::initialize(), and OSG::PointMCastConnection::initialize().
00151 { 00152 UInt32 size; 00153 getUInt32(size); 00154 00155 if(size) 00156 { 00157 // error if [] checks index 00158 // value.assign(reinterpret_cast<char*>(&_buffer[_pos ]), 00159 // reinterpret_cast<char*>(&_buffer[_pos + size]) ); 00160 00161 value.assign(reinterpret_cast<char*>(&(_buffer[_pos])), size); 00162 00163 _pos += size; 00164 } 00165 else 00166 { 00167 value.erase(); 00168 } 00169 }
| void OSG::BinaryMessage::getReal32 | ( | Real32 & | value | ) | [inline] |
| UInt32 OSG::BinaryMessage::getUInt32 | ( | void | ) | [inline] |
| Int32 OSG::BinaryMessage::getInt32 | ( | void | ) | [inline] |
| UInt16 OSG::BinaryMessage::getUInt16 | ( | void | ) | [inline] |
| Int16 OSG::BinaryMessage::getInt16 | ( | void | ) | [inline] |
| UInt8 OSG::BinaryMessage::getUInt8 | ( | void | ) | [inline] |
| Int8 OSG::BinaryMessage::getInt8 | ( | void | ) | [inline] |
| std::string OSG::BinaryMessage::getString | ( | void | ) | [inline] |
| Real32 OSG::BinaryMessage::getReal32 | ( | void | ) | [inline] |
| BinaryMessage & BinaryMessage::operator= | ( | const BinaryMessage & | source | ) |
Definition at line 117 of file OSGBinaryMessage.cpp.
00118 { 00119 if(this == &source) 00120 return *this; 00121 00122 // copy parts inherited from parent 00123 *(static_cast<Inherited *>(this)) = source; 00124 00125 // free mem alloced by members of 'this' 00126 00127 // alloc new mem for members 00128 00129 // copy 00130 _buffer=source._buffer; 00131 _pos =source._pos; 00132 return *this; 00133 }
| NetworkMessage::Header & NetworkMessage::getHeader | ( | void | ) | [inherited] |
Get message header. A pointer to the first byte of the message is returned
Definition at line 97 of file OSGNetworkMessage.cpp.
References OSG::NetworkMessage::getBuffer().
Referenced by OSG::Socket::send(), and OSG::DgramSocket::sendTo().
00098 { 00099 return *((Header*)(getBuffer())); 00100 }
BufferType OSG::BinaryMessage::_buffer [protected] |
Definition at line 144 of file OSGBinaryMessage.h.
Referenced by clear(), getBuffer(), getInt16(), getInt32(), getInt8(), getReal32(), getSize(), getString(), getUInt16(), getUInt32(), getUInt8(), operator=(), putInt16(), putInt32(), putInt8(), putReal32(), putString(), putUInt16(), putUInt32(), putUInt8(), and setSize().
UInt32 OSG::BinaryMessage::_pos [protected] |
Definition at line 145 of file OSGBinaryMessage.h.
Referenced by getInt16(), getInt32(), getInt8(), getReal32(), getString(), getUInt16(), getUInt32(), getUInt8(), operator=(), and reset().