37#ifndef _OPENLCB_EVENTSERVICEIMPL_HXX_
38#define _OPENLCB_EVENTSERVICEIMPL_HXX_
49class IncomingEventFlow;
50class GlobalIdentifyFlow;
60 EventHandlerFunction fn;
65 this->registry_entry = entry;
117 MTI_MASK_GLOBAL = 0xffff,
119 MTI_MASK_ADDRESSED_ALL = 0xffff,
131 unsigned mti_value,
unsigned mti_mask);
159 EventHandlerFunction fn_;
161#ifdef DEBUG_EVENT_PERFORMANCE
162 static const int REPORT_COUNT = 100;
181 unsigned mti_value,
unsigned mti_mask)
A BarrierNotifiable allows to create a number of child Notifiable and wait for all of them to finish.
An object that can schedule itself on an executor to run.
Collection of related state machines that pend on incoming messages.
State flow with a given typed input queue.
Base::Action Action
Allows using Action without having StateFlowBase:: prefix in front of it.
Control flow that calls individual event handlers one at a time and waits until the done callback is ...
virtual Action entry() OVERRIDE
Entry into the StateFlow activity.
Flow to receive incoming messages of event protocol, and dispatch them to the registered event handle...
unsigned eventRegistryEpoch_
The epoch of the event registry at the start of the iteration.
uint8_t countEvents_
How many events' cost are accumulated so far.
long long numProcessNsec_
Accumulator of how many msec processingthe events took.
EventIterator * iterator_
Iterator for generating the event handlers from the registry.
Action entry() OVERRIDE
Entry into the StateFlow activity.
long long currentProcessStart_
When the processing of the current event started.
Notifiable * incomingDone_
This done notifiable holds a reference to the incoming message buffer.
EventReport eventReport_
Statically allocated structure for calling the event handlers from the main event queue.
Abstract class for representing iteration through a container for event handlers.
Structure used in registering event handlers.
PImpl class for the EventService.
std::unique_ptr< EventRegistry > registry
The implementation of the event registry.
std::vector< std::unique_ptr< StateFlowWithQueue > > ownedFlows_
Flows that we own.
EventCallerFlow callerFlow_
This flow will serialize calls to NMRAnetEventHandler objects.
Abstract class representing an OpenLCB Interface.
Base class for incoming message handler flows.
Flow to receive incoming messages of event protocol, and dispatch them to the registered event handle...
const EventRegistryEntry * currentEntry_
The handler we need to call.
#define OVERRIDE
Function attribute for virtual functions declaring that this funciton is overriding a funciton that s...
@ MTI_EVENT_MASK
event number present mask
@ MTI_EVENTS_IDENTIFY_GLOBAL
request identify all of every node's events
@ MTI_EVENTS_IDENTIFY_ADDRESSED
request identify all of a node's events
Arguments structure for the EventCallerFlow.
Shared notification structure that is assembled for each incoming event-related message,...