Base module

IPacket

The basic packet type which is passed around the icey system.

IPacket

#include <icy/packet.h>

Subclassed by: FlagPacket, RawPacket, Message, Message

The basic packet type which is passed around the icey system. IPacket can be extended for each protocol to enable polymorphic processing and callbacks using PacketStream and friends.

Public Attributes

ReturnNameDescription
std::anyopaqueOptional type-safe context data. Use std::any_cast to retrieve. Lifetime of the stored value is tied to the packet's lifetime.
std::unique_ptr< IPacketInfo >infoOptional extra information about the packet.
BitwiseflagsProvides basic information about the packet.

opaque

std::any opaque

Optional type-safe context data. Use std::any_cast to retrieve. Lifetime of the stored value is tied to the packet's lifetime.


info

std::unique_ptr< IPacketInfo > info

Optional extra information about the packet.


flags

Bitwise flags

Provides basic information about the packet.

Public Methods

ReturnNameDescription
IPacket inline#### Parameters
IPacket inlineCopy constructor; clones the info object if present.
IPacket &operator= inlineCopy assignment; clones the info object if present.
std::unique_ptr< IPacket >clone constReturns a heap-allocated deep copy of this packet.
ssize_treadRead/parse to the packet from the given input buffer. The number of bytes read is returned.
voidwrite constCopy/generate to the packet given output buffer. The number of bytes written can be obtained from the buffer.
size_tsize virtual const inlineThe size of the packet in bytes.
boolhasData virtual const inlineReturns true if the packet has a non-null data pointer.
char *data virtual const inlineThe packet data pointer for buffered packets.
const void *constData virtual const inlineThe const packet data pointer for buffered packets.
const char *className constReturns the class name of this packet type for logging and diagnostics.
voidprint virtual const inlinePrints a human-readable representation to the given stream.

IPacket

inline

inline IPacket(std::unique_ptr< IPacketInfo > info, unsigned flags)

Parameters

  • info Optional packet info; ownership transferred.

  • flags Initial bitwise flags.


IPacket

inline

inline IPacket(const IPacket & r)

Copy constructor; clones the info object if present.

Parameters

  • r Source packet.

operator=

inline

inline IPacket & operator=(const IPacket & r)

Copy assignment; clones the info object if present.

Parameters

  • r Source packet.

Returns

Reference to this packet.


clone

const

std::unique_ptr< IPacket > clone() const

Returns a heap-allocated deep copy of this packet.

Returns

Owning pointer to the cloned packet.


read

ssize_t read(const ConstBuffer &)

Read/parse to the packet from the given input buffer. The number of bytes read is returned.


write

const

void write(Buffer &) const

Copy/generate to the packet given output buffer. The number of bytes written can be obtained from the buffer.

Todo: It may be preferable to use our pod types here instead of buffer input, but the current codebase requires that the buffer be dynamically resizable for some protocols...


size

virtual const inline

virtual inline size_t size() const

The size of the packet in bytes.

This is the number of bytes that will be written on a call to write(), but may not be the number of bytes that will be consumed by read().


hasData

virtual const inline

virtual inline bool hasData() const

Returns true if the packet has a non-null data pointer.


data

virtual const inline

virtual inline char * data() const

The packet data pointer for buffered packets.


constData

virtual const inline

virtual inline const void * constData() const

The const packet data pointer for buffered packets.


className

const

const char * className() const

Returns the class name of this packet type for logging and diagnostics.


print

virtual const inline

virtual inline void print(std::ostream & os) const

Prints a human-readable representation to the given stream.

Parameters

  • os Output stream.