virtual void processDownstreamControl(const ControlMessages &msgs)=0
std::string Serialization
A Packet class that allows upstream processing to strip layer headers as the packet travels up the st...
void processDownstreamPacket(NEMStatefulLayer *pStatefulLayer, NEMLayer *pLayer, DownstreamPacket &pkt, const ControlMessages &msgs)
virtual void processDownstreamPacket(DownstreamPacket &pkt, const ControlMessages &msgs=empty)=0
virtual void processUpstreamPacket(UpstreamPacket &pkt, const ControlMessages &msgs=empty)=0
virtual void processConfiguration(NEMStatefulLayer *pStatefulLayer, NEMLayer *pLayer, const ConfigurationUpdate &update)
void processEvent(NEMStatefulLayer *pStatefulLayer, NEMLayer *pLayer, const EventId &id, const Serialization &serialization)
std::list< const ControlMessage * > ControlMessages
void changeState(NEMStatefulLayer *pStatefulLayer, NEMLayerState *pState)
void handlePostStart(NEMStatefulLayer *pStatefulLayer, NEMLayer *pLayer)
Base class for NEMLayer containers. Builders construct NEMLayer objects to contain derived instances ...
void processUpstreamControl(NEMStatefulLayer *pStatefulLayer, NEMLayer *pLayer, const ControlMessages &msgs)
void handleStop(NEMStatefulLayer *pStatefulLayer, NEMLayer *pLayer)
virtual void processTimedEvent(TimerEventId eventId, const TimePoint &expireTime, const TimePoint &scheduleTime, const TimePoint &fireTime, const void *arg)
Specialized packet the allows downstream processing to add layer specific headers as the packet trave...
void processUpstreamPacket(NEMStatefulLayer *pStatefulLayer, NEMLayer *pLayer, UpstreamPacket &pkt, const ControlMessages &msgs)
virtual void processEvent(const EventId &eventId, const Serialization &serialization)
void processTimedEvent(NEMStatefulLayer *pStatefulLayer, NEMLayer *pLayer, TimerEventId eventId, const TimePoint &expireTime, const TimePoint &scheduleTime, const TimePoint &fireTime, const void *arg)
virtual void processConfiguration(const ConfigurationUpdate &update)
Encapsulated behavior associated with an NEMLayer depending on the layer's current context...
std::vector< ConfigurationNameAnyValues > ConfigurationUpdate
A layer stack that enforces component state transition rules. The stateful layer is not a fully funct...
Clock::time_point TimePoint
static NEMLayerStateStopped * instance()
virtual void processUpstreamControl(const ControlMessages &msgs)=0
void processDownstreamControl(NEMStatefulLayer *pStatefulLayer, NEMLayer *pLayer, const ControlMessages &msgs)