Base module

PacketFactory

Priority-ordered factory that creates typed packets from raw buffers using registered strategies.

#include <icy/packetfactory.h>

class PacketFactory

Defined in src/base/include/icy/packetfactory.h:95

Public Methods

ReturnNameDescription
PacketFactoryDefaulted constructor.
PacketFactoryDeleted constructor.
PacketFactory &operator=Deleted assignment operator.
PacketFactoryDefaulted constructor.
PacketFactory &operator=Defaulted assignment operator.
~PacketFactory virtualDefaulted destructor.
voidregisterPacketType inlineRegisters a PacketCreationStrategy<PacketT> at the given priority. Any previously registered strategy for PacketT is replaced.
voidunregisterPacketType inlineRemoves the PacketCreationStrategy<PacketT> from the factory, if present.
voidregisterStrategy inlineRegisters an arbitrary IPacketCreationStrategy subclass at the given priority. Any previously registered instance of the same type is replaced.
voidunregisterStrategy inlineRemoves the StrategyT instance from the factory, if present.
PacketCreationStrategyList &types inline
const PacketCreationStrategyList &types const inline
boolonPacketCreated virtual inlineCalled after a packet is successfully created by a strategy. Override to apply filtering; return false to reject the packet (it will be deleted).
IPacket *createPacket virtual inlineIterates registered strategies in priority order and returns the first successfully created packet.

PacketFactory

PacketFactory() = default

Defined in src/base/include/icy/packetfactory.h:98

Defaulted constructor.


PacketFactory

PacketFactory(const PacketFactory &) = delete

Defined in src/base/include/icy/packetfactory.h:99

Deleted constructor.


operator=

PacketFactory & operator=(const PacketFactory &) = delete

Defined in src/base/include/icy/packetfactory.h:100

Deleted assignment operator.


PacketFactory

PacketFactory(PacketFactory &&) = default

Defined in src/base/include/icy/packetfactory.h:101

Defaulted constructor.


operator=

PacketFactory & operator=(PacketFactory &&) = default

Defined in src/base/include/icy/packetfactory.h:102

Defaulted assignment operator.


~PacketFactory

virtual

virtual ~PacketFactory() = default

Defined in src/base/include/icy/packetfactory.h:103

Defaulted destructor.


registerPacketType

inline

template<class PacketT> inline void registerPacketType(int priority)

Defined in src/base/include/icy/packetfactory.h:110

Registers a PacketCreationStrategy<PacketT> at the given priority. Any previously registered strategy for PacketT is replaced.

Parameters

ParameterTypeDescription
priorityintDispatch priority (0–100; higher runs first).

unregisterPacketType

inline

template<class PacketT> inline void unregisterPacketType()

Defined in src/base/include/icy/packetfactory.h:120

Removes the PacketCreationStrategy<PacketT> from the factory, if present.


registerStrategy

inline

template<class StrategyT> inline void registerStrategy(int priority)

Defined in src/base/include/icy/packetfactory.h:134

Registers an arbitrary IPacketCreationStrategy subclass at the given priority. Any previously registered instance of the same type is replaced.

Parameters

ParameterTypeDescription
priorityintDispatch priority (0–100; higher runs first).

unregisterStrategy

inline

template<class StrategyT> inline void unregisterStrategy()

Defined in src/base/include/icy/packetfactory.h:144

Removes the StrategyT instance from the factory, if present.


types

inline

inline PacketCreationStrategyList & types()

Defined in src/base/include/icy/packetfactory.h:154

Returns

Mutable reference to the ordered list of registered strategies.


types

const inline

inline const PacketCreationStrategyList & types() const

Defined in src/base/include/icy/packetfactory.h:160

Returns

Const reference to the ordered list of registered strategies.


onPacketCreated

virtual inline

virtual inline bool onPacketCreated(IPacket * packet)

Defined in src/base/include/icy/packetfactory.h:169

Called after a packet is successfully created by a strategy. Override to apply filtering; return false to reject the packet (it will be deleted).

Returns

True to accept the packet, false to discard it and try the next strategy.

Parameters

ParameterTypeDescription
packetIPacket *Newly created packet.

createPacket

virtual inline

virtual inline IPacket * createPacket(const ConstBuffer & buffer, size_t & nread)

Defined in src/base/include/icy/packetfactory.h:181

Iterates registered strategies in priority order and returns the first successfully created packet.

Returns

Newly allocated packet, or nullptr if no strategy matched.

Parameters

ParameterTypeDescription
bufferconst ConstBuffer &Raw input data.
nreadsize_t &Set to the number of bytes consumed on success.

Exceptions

ExceptionDescription
std::logic_errorif no packet types have been registered.

Protected Attributes


_types

PacketCreationStrategyList _types

Type: PacketCreationStrategyList

Defined in src/base/include/icy/packetfactory.h:200

Private Methods

ReturnNameDescription
voidsortTypes inline

sortTypes

inline

inline void sortTypes()

Defined in src/base/include/icy/packetfactory.h:203