IPacket
IPacket
#include <icy/packet.h>class IPacketDefined in src/base/include/icy/packet.h:47
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.
List of all members
| Name | Kind | Owner |
|---|---|---|
operator<< | friend | Declared here |
opaque | variable | Declared here |
info | variable | Declared here |
flags | variable | Declared here |
IPacket | function | Declared here |
IPacket | function | Declared here |
operator= | function | Declared here |
clone | function | Declared here |
~IPacket | function | Declared here |
read | function | Declared here |
write | function | Declared here |
size | function | Declared here |
hasData | function | Declared here |
data | function | Declared here |
constData | function | Declared here |
className | function | Declared here |
print | function | Declared here |
Friends
| Name | Description |
|---|---|
operator<< inline | Stream insertion operator; delegates to print(). |
operator<<
inline
friend inline std::ostream & operator<<(std::ostream & stream, const IPacket & p)Defined in src/base/include/icy/packet.h:137
Stream insertion operator; delegates to print().
Parameters
streamOutput stream.pPacket to print.
Returns
Reference to the stream.
Public Attributes
| Return | Name | Description |
|---|---|---|
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. |
std::unique_ptr< IPacketInfo > | info | Optional extra information about the packet. |
Bitwise | flags | Provides basic information about the packet. |
opaque
std::any opaqueDefined in src/base/include/icy/packet.h:86
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 > infoDefined in src/base/include/icy/packet.h:89
Optional extra information about the packet.
flags
Bitwise flagsDefined in src/base/include/icy/packet.h:92
Provides basic information about the packet.
Public Methods
| Return | Name | Description |
|---|---|---|
IPacket inline | ||
IPacket inline | Copy constructor; clones the info object if present. | |
IPacket & | operator= inline | Copy assignment; clones the info object if present. |
std::unique_ptr< IPacket > | clone virtual const | Returns a heap-allocated deep copy of this packet. |
ssize_t | read virtual | Read/parse to the packet from the given input buffer. The number of bytes read is returned. |
void | write virtual const | Copy/generate to the packet given output buffer. The number of bytes written can be obtained from the buffer. |
size_t | size virtual const inline | The size of the packet in bytes. |
bool | hasData virtual const inline | Returns true if the packet has a non-null data pointer. |
char * | data virtual const inline | The packet data pointer for buffered packets. |
const void * | constData virtual const inline | The const packet data pointer for buffered packets. |
const char * | className virtual const | Returns the class name of this packet type for logging and diagnostics. |
void | print virtual const inline | Prints a human-readable representation to the given stream. |
IPacket
inline
inline IPacket(std::unique_ptr< IPacketInfo > info = nullptr, unsigned flags = 0)Defined in src/base/include/icy/packet.h:52
Parameters
infoOptional packet info; ownership transferred.flagsInitial bitwise flags.
IPacket
inline
inline IPacket(const IPacket & r)Defined in src/base/include/icy/packet.h:60
Copy constructor; clones the info object if present.
Parameters
rSource packet.
operator=
inline
inline IPacket & operator=(const IPacket & r)Defined in src/base/include/icy/packet.h:70
Copy assignment; clones the info object if present.
Parameters
rSource packet.
Returns
Reference to this packet.
clone
virtual const
virtual std::unique_ptr< IPacket > clone() constDefined in src/base/include/icy/packet.h:80
Returns a heap-allocated deep copy of this packet.
Returns
Owning pointer to the cloned packet.
Reimplemented by
read
virtual
virtual ssize_t read(const ConstBuffer &)Defined in src/base/include/icy/packet.h:96
Read/parse to the packet from the given input buffer. The number of bytes read is returned.
Reimplemented by
write
virtual const
virtual void write(Buffer &) constDefined in src/base/include/icy/packet.h:105
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...
Reimplemented by
size
virtual const inline
virtual inline size_t size() constDefined in src/base/include/icy/packet.h:112
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().
Reimplemented by
hasData
virtual const inline
virtual inline bool hasData() constDefined in src/base/include/icy/packet.h:115
Returns true if the packet has a non-null data pointer.
Reimplemented by
data
virtual const inline
virtual inline char * data() constDefined in src/base/include/icy/packet.h:118
The packet data pointer for buffered packets.
Reimplemented by
constData
virtual const inline
virtual inline const void * constData() constDefined in src/base/include/icy/packet.h:121
The const packet data pointer for buffered packets.
className
virtual const
virtual const char * className() constDefined in src/base/include/icy/packet.h:124
Returns the class name of this packet type for logging and diagnostics.
Reimplemented by
classNameclassNameclassNameclassNameclassNameclassNameclassNameclassNameclassNameclassNameclassName
virtual const inline
virtual inline void print(std::ostream & os) constDefined in src/base/include/icy/packet.h:128
Prints a human-readable representation to the given stream.
Parameters
osOutput stream.
