Panda3D
|
An ordered list of data elements, formatted in memory for transmission over a socket or writing to a data file. More...
#include "datagram.h"
Public Member Functions | |
Datagram (const Datagram ©)=default | |
Datagram (const void *data, size_t size) | |
Constructs a datagram from an existing block of data. More... | |
Datagram (Datagram &&from) noexcept=default | |
Datagram (vector_uchar data) | |
Constructs a datagram from an existing block of data. More... | |
void | add_be_float32 (PN_float32 value) |
Adds a 32-bit single-precision big-endian floating-point number to the datagram. More... | |
void | add_be_float64 (PN_float64 value) |
Adds a 64-bit big-endian floating-point number to the datagram. More... | |
void | add_be_int16 (int16_t value) |
Adds a signed 16-bit big-endian integer to the datagram. More... | |
void | add_be_int32 (int32_t value) |
Adds a signed 32-bit big-endian integer to the datagram. More... | |
void | add_be_int64 (int64_t value) |
Adds a signed 64-bit big-endian integer to the datagram. More... | |
void | add_be_uint16 (uint16_t value) |
Adds an unsigned 16-bit big-endian integer to the datagram. More... | |
void | add_be_uint32 (uint32_t value) |
Adds an unsigned 32-bit big-endian integer to the datagram. More... | |
void | add_be_uint64 (uint64_t value) |
Adds an unsigned 64-bit big-endian integer to the datagram. More... | |
void | add_blob (const vector_uchar &) |
Adds a variable-length binary blob to the datagram. More... | |
void | add_blob32 (const vector_uchar &) |
Adds a variable-length binary blob to the datagram, using a 32-bit length field to allow very long blobs. More... | |
void | add_bool (bool value) |
Adds a boolean value to the datagram. More... | |
void | add_fixed_string (const std::string &str, size_t size) |
Adds a fixed-length string to the datagram. More... | |
void | add_float32 (PN_float32 value) |
Adds a 32-bit single-precision floating-point number to the datagram. More... | |
void | add_float64 (PN_float64 value) |
Adds a 64-bit floating-point number to the datagram. More... | |
void | add_int16 (int16_t value) |
Adds a signed 16-bit integer to the datagram. More... | |
void | add_int32 (int32_t value) |
Adds a signed 32-bit integer to the datagram. More... | |
void | add_int64 (int64_t value) |
Adds a signed 64-bit integer to the datagram. More... | |
void | add_int8 (int8_t value) |
Adds a signed 8-bit integer to the datagram. More... | |
void | add_stdfloat (PN_stdfloat value) |
Adds either a 32-bit or a 64-bit floating-point number, according to set_stdfloat_double(). More... | |
void | add_string (const std::string &str) |
Adds a variable-length string to the datagram. More... | |
void | add_string32 (const std::string &str) |
Adds a variable-length string to the datagram, using a 32-bit length field to allow very long strings. More... | |
void | add_uint16 (uint16_t value) |
Adds an unsigned 16-bit integer to the datagram. More... | |
void | add_uint32 (uint32_t value) |
Adds an unsigned 32-bit integer to the datagram. More... | |
void | add_uint64 (uint64_t value) |
Adds an unsigned 64-bit integer to the datagram. More... | |
void | add_uint8 (uint8_t value) |
Adds an unsigned 8-bit integer to the datagram. More... | |
void | add_wstring (const std::wstring &str) |
Adds a variable-length wstring to the datagram. More... | |
void | add_z_string (const std::string &str) |
Adds a variable-length string to the datagram, as a NULL-terminated string. More... | |
void | append_data (const vector_uchar &data) |
Appends some more raw data to the end of the datagram. More... | |
void | append_data (const void *data, size_t size) |
Appends some more raw data to the end of the datagram. More... | |
void | assign (const void *data, size_t size) |
Replaces the datagram's data with the indicated block. More... | |
virtual void | clear () |
Resets the datagram to empty, in preparation for building up a new datagram. More... | |
void | copy_array (CPTA_uchar data) |
Replaces the data in the Datagram with a copy of the data in the indicated CPTA_uchar. More... | |
void | dump_hex (std::ostream &out, unsigned int indent=0) const |
Writes a representation of the entire datagram contents, as a sequence of hex (and ASCII) values. More... | |
virtual TypeHandle | force_init_type () |
CPTA_uchar | get_array () const |
Returns a const pointer to the actual data in the Datagram. More... | |
const void * | get_data () const |
Returns a pointer to the beginning of the datagram's data. More... | |
size_t | get_length () const |
Returns the number of bytes in the datagram. More... | |
std::string | get_message () const |
Returns the datagram's data as a string. More... | |
bool | get_stdfloat_double () const |
Returns the stdfloat_double flag. More... | |
virtual TypeHandle | get_type () const |
PTA_uchar | modify_array () |
Returns a modifiable pointer to the actual data in the Datagram. More... | |
bool | operator!= (const Datagram &other) const |
bool | operator< (const Datagram &other) const |
Datagram & | operator= (const Datagram ©)=default |
Datagram & | operator= (Datagram &&from) noexcept=default |
bool | operator== (const Datagram &other) const |
void | output (std::ostream &out) const |
Write a string representation of this instance to <out>. More... | |
void | pad_bytes (size_t size) |
Adds the indicated number of zero bytes to the datagram. More... | |
void | set_array (PTA_uchar data) |
Replaces the data in the Datagram with the data in the indicated PTA_uchar. More... | |
void | set_stdfloat_double (bool stdfloat_double) |
Changes the stdfloat_double flag, which defines the operation performed by add_stdfloat() and DatagramIterator::get_stdfloat(). More... | |
void | write (std::ostream &out, unsigned int indent=0) const |
Write a string representation of this instance to <out>. More... | |
![]() | |
TypedObject (const TypedObject ©)=default | |
TypedObject * | as_typed_object () |
Returns the object, upcast (if necessary) to a TypedObject pointer. More... | |
const TypedObject * | as_typed_object () const |
Returns the object, upcast (if necessary) to a TypedObject pointer. More... | |
int | get_best_parent_from_Set (const std::set< int > &) const |
int | get_type_index () const |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More... | |
bool | is_exact_type (TypeHandle handle) const |
Returns true if the current object is the indicated type exactly. More... | |
bool | is_of_type (TypeHandle handle) const |
Returns true if the current object is or derives from the indicated type. More... | |
TypedObject & | operator= (const TypedObject ©)=default |
![]() | |
void | operator delete (void *, void *) |
void | operator delete (void *ptr) |
void | operator delete[] (void *, void *) |
void | operator delete[] (void *ptr) |
void * | operator new (size_t size) |
void * | operator new (size_t size, void *ptr) |
void * | operator new[] (size_t size) |
void * | operator new[] (size_t size, void *ptr) |
Static Public Member Functions | |
static TypeHandle | get_class_type () |
static void | init_type () |
![]() | |
static TypeHandle | get_class_type () |
static void | init_type () |
This function is declared non-inline to work around a compiler bug in g++ 2.96. More... | |
Additional Inherited Members | |
![]() | |
get_type | |
An ordered list of data elements, formatted in memory for transmission over a socket or writing to a data file.
Data elements should be added one at a time, in order, to the Datagram. The nature and contents of the data elements are totally up to the user. When a Datagram has been transmitted and received, its data elements may be extracted using a DatagramIterator; it is up to the caller to know the correct type of each data element in order.
A Datagram is itself headerless; it is simply a collection of data elements.
Definition at line 38 of file datagram.h.
|
inline |
Constructs a datagram from an existing block of data.
Definition at line 17 of file datagram.I.
|
inlineexplicit |
Constructs a datagram from an existing block of data.
Definition at line 25 of file datagram.I.
|
inline |
Adds a 32-bit single-precision big-endian floating-point number to the datagram.
Definition at line 199 of file datagram.I.
Referenced by FltMaterial::build_14_record().
|
inline |
Adds a 64-bit big-endian floating-point number to the datagram.
Definition at line 208 of file datagram.I.
|
inline |
Adds a signed 16-bit big-endian integer to the datagram.
Definition at line 144 of file datagram.I.
|
inline |
Adds a signed 32-bit big-endian integer to the datagram.
Definition at line 153 of file datagram.I.
|
inline |
Adds a signed 64-bit big-endian integer to the datagram.
Definition at line 162 of file datagram.I.
|
inline |
Adds an unsigned 16-bit big-endian integer to the datagram.
Definition at line 171 of file datagram.I.
|
inline |
Adds an unsigned 32-bit big-endian integer to the datagram.
Definition at line 180 of file datagram.I.
Referenced by FltMaterial::build_14_record().
|
inline |
Adds an unsigned 64-bit big-endian integer to the datagram.
Definition at line 189 of file datagram.I.
|
inline |
Adds a variable-length binary blob to the datagram.
This actually adds a count followed by n bytes.
Definition at line 277 of file datagram.I.
|
inline |
Adds a variable-length binary blob to the datagram, using a 32-bit length field to allow very long blobs.
Definition at line 293 of file datagram.I.
|
inline |
Adds a boolean value to the datagram.
Definition at line 33 of file datagram.I.
Referenced by BulletBodyNode::write_datagram(), BulletDebugNode::write_datagram(), BulletTriangleMesh::write_datagram(), BulletTriangleMeshShape::write_datagram(), GeomVertexAnimationSpec::write_datagram(), Shader::write_datagram(), ShaderBuffer::write_datagram(), MovieVideo::write_datagram(), AudioVolumeAttrib::write_datagram(), BillboardEffect::write_datagram(), Camera::write_datagram(), ClipPlaneAttrib::write_datagram(), ColorScaleAttrib::write_datagram(), CullFaceAttrib::write_datagram(), LensNode::write_datagram(), LightAttrib::write_datagram(), RenderModeAttrib::write_datagram(), ScissorAttrib::write_datagram(), ScissorEffect::write_datagram(), ShowBoundsEffect::write_datagram(), TextureAttrib::write_datagram(), DirectionalLight::write_datagram(), LightLensNode::write_datagram(), PointLight::write_datagram(), Spotlight::write_datagram(), RecorderFrame::write_datagram(), SparseArray::write_datagram(), TextureStage::write_datagram(), EggFile::write_datagram(), ImageFile::write_datagram(), PaletteGroup::write_datagram(), Palettizer::write_datagram(), TextureImage::write_datagram(), TexturePlacement::write_datagram(), TextureProperties::write_datagram(), TextureReference::write_datagram(), CollisionHandlerGravity::write_datagram(), and CollisionHandlerPusher::write_datagram().
|
inline |
Adds a fixed-length string to the datagram.
If the string given is less than the requested size, this will pad the string out with zeroes; if it is greater than the requested size, this will silently truncate the string.
Definition at line 262 of file datagram.I.
Referenced by FltMaterial::build_14_record().
|
inline |
Adds a 32-bit single-precision floating-point number to the datagram.
Since this kind of float is not necessarily portable across different architectures, special care is required.
Definition at line 113 of file datagram.I.
Referenced by PStatCollectorDef::write_datagram(), and PStatFrameData::write_datagram().
|
inline |
Adds a 64-bit floating-point number to the datagram.
Definition at line 122 of file datagram.I.
Referenced by RecorderFrame::write_datagram(), Palettizer::write_datagram(), TextureImage::write_datagram(), TexturePosition::write_datagram(), TextureReference::write_datagram(), CollisionHandlerFloor::write_datagram(), CollisionHandlerGravity::write_datagram(), and FFTCompressor::write_header().
|
inline |
Adds a signed 16-bit integer to the datagram.
Definition at line 57 of file datagram.I.
Referenced by PaletteGroup::write_datagram(), TextureImage::write_datagram(), SamplerState::write_datagram(), and PStatCollectorDef::write_datagram().
|
inline |
Adds a signed 32-bit integer to the datagram.
Definition at line 66 of file datagram.I.
Referenced by BulletConvexPointCloudShape::write_datagram(), BulletHeightfieldShape::write_datagram(), BulletMultiSphereShape::write_datagram(), BulletTriangleMesh::write_datagram(), ParamTextureImage::write_datagram(), AuxBitplaneAttrib::write_datagram(), CullBinAttrib::write_datagram(), DepthOffsetAttrib::write_datagram(), PlaneNode::write_datagram(), StencilAttrib::write_datagram(), TexMatrixAttrib::write_datagram(), LightLensNode::write_datagram(), RecorderHeader::write_datagram(), SparseArray::write_datagram(), Material::write_datagram(), TextureStage::write_datagram(), ImageFile::write_datagram(), PaletteGroup::write_datagram(), Palettizer::write_datagram(), TexturePlacement::write_datagram(), TexturePosition::write_datagram(), TextureProperties::write_datagram(), TextureReference::write_datagram(), DownloadDb::Db::write_header(), and FFTCompressor::write_reals().
|
inline |
Adds a signed 64-bit integer to the datagram.
Definition at line 75 of file datagram.I.
|
inline |
Adds a signed 8-bit integer to the datagram.
Definition at line 41 of file datagram.I.
Referenced by BulletCapsuleShape::write_datagram(), BulletConeShape::write_datagram(), BulletCylinderShape::write_datagram(), BulletHeightfieldShape::write_datagram(), ParamTextureImage::write_datagram(), AlphaTestAttrib::write_datagram(), ColorAttrib::write_datagram(), CullFaceAttrib::write_datagram(), DepthTestAttrib::write_datagram(), DepthWriteAttrib::write_datagram(), Fog::write_datagram(), LightRampAttrib::write_datagram(), RenderModeAttrib::write_datagram(), RescaleNormalAttrib::write_datagram(), ShadeModelAttrib::write_datagram(), TransparencyAttrib::write_datagram(), HermiteCurveCV::write_datagram(), and FFTCompressor::write_header().
|
inline |
Adds either a 32-bit or a 64-bit floating-point number, according to set_stdfloat_double().
Definition at line 132 of file datagram.I.
Referenced by BulletBodyNode::write_datagram(), BulletBoxShape::write_datagram(), BulletCapsuleShape::write_datagram(), BulletConeShape::write_datagram(), BulletConvexHullShape::write_datagram(), BulletCylinderShape::write_datagram(), BulletHeightfieldShape::write_datagram(), BulletMinkowskiSumShape::write_datagram(), BulletMultiSphereShape::write_datagram(), BulletPlaneShape::write_datagram(), BulletRigidBodyNode::write_datagram(), BulletSphereShape::write_datagram(), BulletTriangleMesh::write_datagram(), BulletTriangleMeshShape::write_datagram(), AnimChannelScalarDynamic::write_datagram(), CollisionCapsule::write_datagram(), CollisionParabola::write_datagram(), AlphaTestAttrib::write_datagram(), AudioVolumeAttrib::write_datagram(), BillboardEffect::write_datagram(), Camera::write_datagram(), DepthOffsetAttrib::write_datagram(), Fog::write_datagram(), PolylightNode::write_datagram(), RenderModeAttrib::write_datagram(), UvScrollNode::write_datagram(), STTransform::write_datagram(), TransformBlend::write_datagram(), CollisionSphere::write_datagram(), Material::write_datagram(), SamplerState::write_datagram(), and TimedCycle::write_datagram().
|
inline |
Adds a variable-length string to the datagram.
This actually adds a count followed by n bytes.
Definition at line 218 of file datagram.I.
Referenced by PStatClientControlMessage::encode(), PStatServerControlMessage::encode(), DirectD::send_command(), GeomVertexData::write_datagram(), Shader::write_datagram(), ShaderBuffer::write_datagram(), MovieVideo::write_datagram(), CullBinAttrib::write_datagram(), PandaNode::write_datagram(), BamCacheRecord::write_datagram(), RecorderTable::write_datagram(), PartGroup::write_datagram(), InternalName::write_datagram(), Material::write_datagram(), TextureStage::write_datagram(), HermiteCurveCV::write_datagram(), EggFile::write_datagram(), ImageFile::write_datagram(), PaletteGroup::write_datagram(), PalettePage::write_datagram(), Palettizer::write_datagram(), TextureImage::write_datagram(), TextureReference::write_datagram(), CollisionHandlerEvent::write_datagram(), PStatCollectorDef::write_datagram(), ButtonEvent::write_datagram(), and PandaNode::write_recorder().
|
inline |
Adds a variable-length string to the datagram, using a 32-bit length field to allow very long strings.
Definition at line 234 of file datagram.I.
|
inline |
Adds an unsigned 16-bit integer to the datagram.
Definition at line 84 of file datagram.I.
Referenced by DatagramUDPHeader::DatagramUDPHeader(), add_wstring(), PStatClientControlMessage::encode(), PStatServerControlMessage::encode(), AnimPreloadTable::write_datagram(), Character::write_datagram(), CollisionNode::write_datagram(), DataNodeTransmit::write_datagram(), ButtonEventList::write_datagram(), GeomPatches::write_datagram(), GeomVertexAnimationSpec::write_datagram(), GeomVertexArrayFormat::write_datagram(), GeomVertexColumn::write_datagram(), GeomVertexFormat::write_datagram(), SliderTable::write_datagram(), TransformBlendTable::write_datagram(), TransformTable::write_datagram(), AntialiasAttrib::write_datagram(), ClipPlaneAttrib::write_datagram(), CompassEffect::write_datagram(), LensNode::write_datagram(), LightAttrib::write_datagram(), ModelNode::write_datagram(), OccluderEffect::write_datagram(), OccluderNode::write_datagram(), PortalNode::write_datagram(), ScissorEffect::write_datagram(), TexGenAttrib::write_datagram(), TexMatrixAttrib::write_datagram(), TexProjectorEffect::write_datagram(), TextureAttrib::write_datagram(), BamCacheRecord::write_datagram(), RecorderTable::write_datagram(), TransformBlend::write_datagram(), ComputeNode::Dispatcher::CData::write_datagram(), AnimChannelBase::write_datagram(), PartBundleNode::write_datagram(), PartGroup::write_datagram(), CharacterJoint::write_datagram(), CollisionFloorMesh::write_datagram(), CollisionPolygon::write_datagram(), PStatFrameData::write_datagram(), ButtonEvent::write_datagram(), and TimedCycle::write_datagram().
|
inline |
Adds an unsigned 32-bit integer to the datagram.
Definition at line 93 of file datagram.I.
Referenced by add_wstring(), BulletConvexHullShape::write_datagram(), CollisionNode::write_datagram(), Shader::write_datagram(), Camera::write_datagram(), StencilAttrib::write_datagram(), BamCacheIndex::write_datagram(), BamCacheRecord::write_datagram(), RecorderFrame::write_datagram(), RecorderHeader::write_datagram(), SpeedTreeNode::write_datagram(), BitArray::write_datagram(), SparseArray::write_datagram(), EggFile::write_datagram(), PaletteGroup::write_datagram(), PaletteGroups::write_datagram(), PaletteImage::write_datagram(), PalettePage::write_datagram(), TextureImage::write_datagram(), CollisionHandlerEvent::write_datagram(), and DownloadDb::Db::write_header().
|
inline |
Adds an unsigned 64-bit integer to the datagram.
Definition at line 102 of file datagram.I.
Referenced by ShaderBuffer::write_datagram(), and BamCacheRecord::write_datagram().
|
inline |
Adds an unsigned 8-bit integer to the datagram.
Definition at line 49 of file datagram.I.
Referenced by PStatClientControlMessage::encode(), PStatServerControlMessage::encode(), GeomVertexAnimationSpec::write_datagram(), GeomVertexArrayFormat::write_datagram(), GeomVertexColumn::write_datagram(), MatrixLens::write_datagram(), ParamTextureImage::write_datagram(), Shader::write_datagram(), ShaderBuffer::write_datagram(), ColorBlendAttrib::write_datagram(), ColorWriteAttrib::write_datagram(), LogicOpAttrib::write_datagram(), ModelNode::write_datagram(), PlaneNode::write_datagram(), TexGenAttrib::write_datagram(), CollisionSolid::write_datagram(), TextureStage::write_datagram(), ImageFile::write_datagram(), Palettizer::write_datagram(), TextureImage::write_datagram(), SamplerState::write_datagram(), ButtonEvent::write_datagram(), and BamWriter::write_file_data().
void Datagram::add_wstring | ( | const std::wstring & | str | ) |
Adds a variable-length wstring to the datagram.
Definition at line 82 of file datagram.cxx.
References add_uint16(), and add_uint32().
|
inline |
Adds a variable-length string to the datagram, as a NULL-terminated string.
Definition at line 246 of file datagram.I.
|
inline |
Appends some more raw data to the end of the datagram.
Definition at line 305 of file datagram.I.
void Datagram::append_data | ( | const void * | data, |
size_t | size | ||
) |
Appends some more raw data to the end of the datagram.
Definition at line 128 of file datagram.cxx.
Referenced by ShaderBuffer::write_datagram().
void Datagram::assign | ( | const void * | data, |
size_t | size | ||
) |
Replaces the datagram's data with the indicated block.
Definition at line 158 of file datagram.cxx.
|
virtual |
Resets the datagram to empty, in preparation for building up a new datagram.
Reimplemented in NetDatagram.
Definition at line 34 of file datagram.cxx.
Referenced by NetDatagram::clear(), PStatClientControlMessage::encode(), and PStatServerControlMessage::encode().
|
inline |
Replaces the data in the Datagram with a copy of the data in the indicated CPTA_uchar.
Unlike set_array(), a complete copy is made of the data; subsequent changes to the Datagram will *not* change the source CPTA_uchar.
Definition at line 354 of file datagram.I.
void Datagram::dump_hex | ( | std::ostream & | out, |
unsigned int | indent = 0 |
||
) | const |
Writes a representation of the entire datagram contents, as a sequence of hex (and ASCII) values.
Definition at line 43 of file datagram.cxx.
References get_data(), get_length(), and indent().
Referenced by DatagramUDPHeader::verify_datagram(), DirectD::wait_for_servers(), and write().
|
inline |
Returns a const pointer to the actual data in the Datagram.
Definition at line 363 of file datagram.I.
|
inline |
Returns a pointer to the beginning of the datagram's data.
Definition at line 326 of file datagram.I.
Referenced by DatagramUDPHeader::DatagramUDPHeader(), dump_hex(), IffInputFile::get_id(), Buffered_DatagramConnection::SendMessage(), DatagramUDPHeader::verify_datagram(), and DownloadDb::Db::write_header().
|
inline |
Returns the number of bytes in the datagram.
Definition at line 334 of file datagram.I.
Referenced by DatagramUDPHeader::DatagramUDPHeader(), FltRecordWriter::advance(), dump_hex(), ConnectionWriter::is_valid_for_udp(), Buffered_DatagramConnection::SendMessage(), DatagramUDPHeader::verify_datagram(), DatagramIterator::write(), and DownloadDb::Db::write_header().
|
inline |
Returns the datagram's data as a string.
Definition at line 313 of file datagram.I.
|
inline |
Returns the stdfloat_double flag.
Definition at line 402 of file datagram.I.
|
inline |
Returns a modifiable pointer to the actual data in the Datagram.
Definition at line 371 of file datagram.I.
void Datagram::output | ( | std::ostream & | out | ) | const |
Write a string representation of this instance to <out>.
Definition at line 170 of file datagram.cxx.
void Datagram::pad_bytes | ( | size_t | size | ) |
Adds the indicated number of zero bytes to the datagram.
Definition at line 98 of file datagram.cxx.
Referenced by FltMaterial::build_14_record().
|
inline |
Replaces the data in the Datagram with the data in the indicated PTA_uchar.
This is assignment by reference: subsequent changes to the Datagram will also change the source PTA_uchar.
Definition at line 344 of file datagram.I.
|
inline |
Changes the stdfloat_double flag, which defines the operation performed by add_stdfloat() and DatagramIterator::get_stdfloat().
When this is true, add_stdfloat() adds a 64-bit floating-point number; when it is false, it adds a 32-bit floating-point number. The default is based on the STDFLOAT_DOUBLE compilation flag.
Definition at line 394 of file datagram.I.
void Datagram::write | ( | std::ostream & | out, |
unsigned int | indent = 0 |
||
) | const |
Write a string representation of this instance to <out>.
Definition at line 180 of file datagram.cxx.
References dump_hex(), and indent().
Referenced by DatagramIterator::write().