Datagram¶
-
class
Datagram
¶ Bases:
TypedObject
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.
Inheritance diagram
-
Datagram
(void) = default¶
-
Datagram
(void const *data, std::size_t size)¶
-
explicit
Datagram
(vector_uchar data)¶
-
void
add_be_float32
(PN_float32 value)¶ Adds a 32-bit single-precision big-endian floating-point number to the datagram.
-
void
add_be_float64
(PN_float64 value)¶ Adds a 64-bit big-endian floating-point number to the datagram.
-
void
add_be_int16
(int16_t value)¶ These functions pack numbers big-endian, in case that’s desired.
Adds a signed 16-bit big-endian integer to the datagram.
-
void
add_be_int32
(int32_t value)¶ Adds a signed 32-bit big-endian integer to the datagram.
-
void
add_be_int64
(int64_t value)¶ Adds a signed 64-bit big-endian integer to the datagram.
-
void
add_be_uint16
(uint16_t value)¶ Adds an unsigned 16-bit big-endian integer to the datagram.
-
void
add_be_uint32
(uint32_t value)¶ Adds an unsigned 32-bit big-endian integer to the datagram.
-
void
add_be_uint64
(uint64_t value)¶ Adds an unsigned 64-bit big-endian integer to the datagram.
-
void
add_blob
(vector_uchar const&)¶ Adds a variable-length binary blob to the datagram. This actually adds a count followed by n bytes.
-
void
add_blob32
(vector_uchar const&)¶ Adds a variable-length binary blob to the datagram, using a 32-bit length field to allow very long blobs.
-
void
add_bool
(bool value)¶ Adds a boolean value to the datagram.
-
void
add_fixed_string
(std::string const &str, std::size_t size)¶ 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.
-
void
add_float32
(PN_float32 value)¶ 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.
-
void
add_float64
(PN_float64 value)¶ Adds a 64-bit floating-point number to the datagram.
-
void
add_int16
(int16_t value)¶ The default numeric packing is little-endian.
Adds a signed 16-bit integer to the datagram.
-
void
add_int32
(int32_t value)¶ Adds a signed 32-bit integer to the datagram.
-
void
add_int64
(int64_t value)¶ Adds a signed 64-bit integer to the datagram.
-
void
add_int8
(int8_t value)¶ Adds a signed 8-bit integer to the datagram.
-
void
add_stdfloat
(PN_stdfloat value)¶ Adds either a 32-bit or a 64-bit floating-point number, according to
set_stdfloat_double()
.
-
void
add_string
(std::string const &str)¶ Adds a variable-length string to the datagram. This actually adds a count followed by n bytes.
-
void
add_string32
(std::string const &str)¶ Adds a variable-length string to the datagram, using a 32-bit length field to allow very long strings.
-
void
add_uint16
(uint16_t value)¶ Adds an unsigned 16-bit integer to the datagram.
-
void
add_uint32
(uint32_t value)¶ Adds an unsigned 32-bit integer to the datagram.
-
void
add_uint64
(uint64_t value)¶ Adds an unsigned 64-bit integer to the datagram.
-
void
add_uint8
(uint8_t value)¶ Adds an unsigned 8-bit integer to the datagram.
-
void
add_wstring
(std::wstring const &str)¶ Adds a variable-length wstring to the datagram.
-
void
add_z_string
(std::string const &str)¶ Adds a variable-length string to the datagram, as a NULL-terminated string.
-
void
append_data
(void const *data, std::size_t size)¶
-
void
append_data
(vector_uchar const &data)¶ Appends some more raw data to the end of the datagram.
-
virtual void
clear
(void)¶ Resets the datagram to empty, in preparation for building up a new datagram.
-
void
copy_array
(CPTA_uchar data)¶ Replaces the data in the Datagram with a copy of the data in the indicated
CPTA_uchar
. Unlikeset_array()
, a complete copy is made of the data; subsequent changes to the Datagram will not change the sourceCPTA_uchar
.
-
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.
-
CPTA_uchar
get_array
(void) const¶ Returns a const pointer to the actual data in the Datagram.
-
static TypeHandle
get_class_type
(void)¶
-
std::size_t
get_length
(void) const¶ Returns the number of bytes in the datagram.
-
PyObject *
get_message
(void) const¶ Returns the datagram’s data as a string.
-
bool
get_stdfloat_double
(void) const¶ Returns the stdfloat_double flag. See
set_stdfloat_double()
.
-
void
output
(std::ostream &out) const¶ Write a string representation of this instance to <out>.
-
void
pad_bytes
(std::size_t size)¶ Adds the indicated number of zero bytes to the datagram.
-
void
set_array
(PTA_uchar data)¶ 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 sourcePTA_uchar
.
-
void
set_stdfloat_double
(bool stdfloat_double)¶ Changes the stdfloat_double flag, which defines the operation performed by
add_stdfloat()
andDatagramIterator::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.
-
void
write
(std::ostream &out, unsigned int indent = 0) const¶ Write a string representation of this instance to <out>.
-