|
Open Model Railroad Network (OpenMRN)
|
Protected Types | |
| enum | { DATAGRAM_ID = DatagramDefs::CONFIGURATION } |
| typedef MemorySpace::address_t | address_t |
| typedef MemorySpace::errorcode_t | errorcode_t |
| typedef TypedNodeHandlerMap< Node, MemorySpace > | Registry |
Protected Types inherited from UntypedStateFlow< QueueType > | |
| typedef Action(StateFlowBase::* | Callback) () |
| State Flow callback prototype. | |
Protected Types inherited from StateFlowBase | |
| typedef Action(StateFlowBase::* | Callback) () |
| State Flow callback prototype. | |
Protected Member Functions | |
| MemoryConfigHandlerBase (DatagramService *if_dg) | |
| Action | ok_response_sent () OVERRIDE |
| This state is where the handling will end up after a respond_ok call. | |
| Action | cleanup () |
| Action | client_allocated () |
| Action | send_response_datagram () |
| Action | response_flow_complete () |
| bool | has_custom_space () |
| int | get_space_number () |
| Returns the memory space number, or -1 if the incoming datagram is of incorrect format. | |
| int | get_read_length () |
| Returns the read/write length from byte 6 or 7 of the incoming datagram, or -1 if the incoming datagram is of incorrect format. | |
| int | get_write_length () |
| address_t | get_address () |
| Returns the address from the incoming datagram. | |
| void | set_address_and_space () |
| Copies the address and memory space information from the incoming datagram to the outgoing datagram payload. | |
| void | set_address (address_t address) |
| Sets the address in the response payload buffer. | |
| uint8_t * | out_bytes () |
| const uint8_t * | in_bytes () |
Protected Member Functions inherited from openlcb::DefaultDatagramHandler | |
| DefaultDatagramHandler (DatagramService *if_datagram) | |
| Action | respond_ok (uint8_t flags) |
| Sends a DATAGRAM_OK response to the datagram originator node. | |
| void | inline_respond_ok (uint8_t flags) |
| Sends a DATAGRAM_OK response to the datagram originator node. | |
| Action | respond_reject (uint16_t error_code) |
| Sends a DATAGRAM_REJECT response to the datagram originator node. | |
| size_t | size () |
| const uint8_t * | payload () |
Protected Member Functions inherited from TypedStateFlow< MessageType, UntypedStateFlow< QueueType > > | |
| void | release () OVERRIDE |
| Unrefs the current buffer. | |
| void | return_buffer () |
| For state flows that are operated using invoke_subflow_and_wait this is a way to hand back the buffer to the caller. | |
| MessageType * | message () |
| MessageType * | transfer_message () |
| Releases ownership of the current message. | |
Protected Member Functions inherited from UntypedStateFlow< QueueType > | |
| void | send (BufferBase *msg, unsigned priority=UINT_MAX) |
| Sends a message to the state flow for processing. | |
| QMember * | queue_next (unsigned *priority) OVERRIDE |
| Takes the front entry in the queue. | |
| bool | queue_empty () OVERRIDE |
| Action | call_immediately (Callback c) |
| Imediately call the next state upon return. | |
Protected Member Functions inherited from StateFlowWithQueue | |
| StateFlowWithQueue (Service *service) | |
| Constructor. | |
| Action | exit () |
| Terminates the processing of this flow. | |
| Action | release_and_exit () |
| Terminates the processing of the current message. | |
| BufferBase * | message () |
| BufferBase * | transfer_message () |
| Releases ownership of the current message. | |
| void | reset_message (BufferBase *message, unsigned priority) |
| Sets the current message being processed. | |
| unsigned | priority () |
| void | set_priority (unsigned priority) |
| Overrides the current priority. | |
| void | start_flow_at_init (Callback c) |
| Call this from the constructor of the child class to do some work before the main queue processing loop begins. | |
Protected Member Functions inherited from StateFlowBase | |
| StateFlowBase (Service *service) | |
| Constructor. | |
| ~StateFlowBase () | |
| Destructor. | |
| void | reset_flow (Callback c) |
| Resets the flow to the specified state. | |
| bool | is_state (Callback c) |
| bool | is_terminated () |
| void | start_flow (Callback c) |
| Resets the flow to the specified state and starts it. | |
| Action | again () |
| Call the current state again via call_immediately. | |
| Action | exit () |
| Terminate current StateFlow activity. | |
| Action | delete_this () |
| Terminates the flow and deletes *this. | |
| Action | set_terminated () |
| Sets the flow to terminated state. | |
| Action | call_immediately (Callback c) |
| Imediately call the next state upon return. | |
| Action | wait () |
| Wait for an asynchronous call. | |
| Action | wait_and_call (Callback c) |
| Wait for resource to become available before proceeding to next state. | |
| template<class T > | |
| Action | allocate_and_call (FlowInterface< Buffer< T > > *target_flow, Callback c, Pool *pool=nullptr) |
| Allocates a buffer from a pool and proceed to the next state when allocation is successful. | |
| Action | allocate_and_call (Callback c, QAsync *queue) |
| Allocates an entry from an asynchronous queue, and transitions to a state once the allocation is complete. | |
| template<class T > | |
| Buffer< T > * | full_allocation_result (FlowInterface< Buffer< T > > *target_flow) |
| Takes the result of the asynchronous allocation without resetting the object. | |
| template<class T > | |
| T * | full_allocation_result (TypedQAsync< T > *queue) |
| Takes the result of the asynchronous allocation without resetting the object. | |
| template<class T > | |
| void | cast_allocation_result (T **member) |
| Takes the result of the asynchronous allocation without resetting the object. | |
| template<class T > | |
| Buffer< T > * | get_allocation_result (FlowInterface< Buffer< T > > *target_flow) |
| Takes the result of the asynchronous allocation. | |
| Action | yield_and_call (Callback c) |
| Place the current flow to the back of the executor, and transition to a new state after we get the CPU again. | |
| Action | yield () |
| Place the current flow to the back of the executor, and re-try the current state after we get the CPU again. | |
| Action | sleep_and_call (::Timer *timer, long long timeout_nsec, Callback c) |
| Suspends execution of this control flow for a specified time. | |
| template<class T , typename... Args> | |
| Action | invoke_subflow_and_wait (FlowInterface< Buffer< T > > *target_flow, Callback c, Args &&... args) |
| Calls a helper flow to perform some actions. | |
| Action | read_repeated (StateFlowSelectHelper *helper, int fd, void *buf, size_t size, Callback c, unsigned priority=Selectable::MAX_PRIO) |
| Blocks until size bytes are read and then invokes the next state. | |
| Action | read_single (StateFlowSelectHelper *helper, int fd, void *buf, size_t size, Callback c, unsigned priority=Selectable::MAX_PRIO) |
| Attempts to read at most size_t bytes, and blocks the caller until at least one byte is read. | |
| Action | read_nonblocking (StateFlowSelectHelper *helper, int fd, void *buf, size_t size, Callback c, unsigned priority=Selectable::MAX_PRIO) |
| Attempts to read at most size bytes, and then invokes the next state, even if only zero bytes are available right now. | |
| Action | read_repeated_with_timeout (StateFlowTimedSelectHelper *helper, long long timeout_nsec, int fd, void *buf, size_t size, Callback c, unsigned priority=Selectable::MAX_PRIO) |
| Blocks until size bytes are read, or a timeout expires. | |
| Action | internal_try_read () |
| Implementation state that gets repeatedly called upon every wakeup and tries to make progress on reading. | |
| Action | write_repeated (StateFlowSelectHelper *helper, int fd, const void *buf, size_t size, Callback c, unsigned priority=Selectable::MAX_PRIO) |
| Writes some data into a file descriptor, repeating the operation as necessary until all bytes are written. | |
| Action | internal_try_write () |
| Implementation state that gets repeatedly called upon every wakeup and tries to make progress on writing. | |
Protected Member Functions inherited from QMember | |
| QMember () | |
| Constructor. | |
| ~QMember () | |
| Destructor. | |
Protected Member Functions inherited from Atomic | |
| void | lock () |
| void | unlock () |
Protected Member Functions inherited from LinkedObject< StateFlowWithQueue > | |
| StateFlowWithQueue * | link_this () |
| LinkedObject () | |
| Constructor. Puts *this on the linked list. | |
| ~LinkedObject () | |
| Constructor. Removes *this from the linked list. | |
| StateFlowWithQueue * | link_next () |
Protected Attributes | |
| DatagramPayload | response_ |
| DatagramClient * | responseFlow_ |
| BarrierNotifiable | b_ |
Protected Attributes inherited from QMember | |
| QMember * | next |
| pointer to the next member in the queue | |
Protected Attributes inherited from LinkedObject< StateFlowWithQueue > | |
| StateFlowWithQueue * | link_ |
| Linked list pointer. | |
Additional Inherited Members | |
Public Types inherited from TypedStateFlow< MessageType, UntypedStateFlow< QueueType > > | |
| typedef Base::Action | Action |
| Allows using Action without having StateFlowBase:: prefix in front of it. | |
Public Types inherited from FlowInterface< MessageType > | |
| typedef MessageType | message_type |
| Stores the message template type for external reference. | |
Public Member Functions inherited from openlcb::DefaultDatagramHandler | |
| DatagramService * | dg_service () |
Public Member Functions inherited from StateFlow< MessageType, QueueType > | |
| StateFlow (Service *service) | |
| Constructor. | |
Public Member Functions inherited from TypedStateFlow< MessageType, UntypedStateFlow< QueueType > > | |
| TypedStateFlow (Service *service) | |
| Constructor. | |
| virtual | ~TypedStateFlow () |
| Destructor. | |
| void | send (MessageType *msg, unsigned priority=UINT_MAX) OVERRIDE |
| Sends a message to the state flow for processing. | |
| virtual Action | entry () override=0 |
| Entry into the StateFlow activity. | |
Public Member Functions inherited from UntypedStateFlow< QueueType > | |
| UntypedStateFlow (Service *service) | |
| Constructor. | |
Public Member Functions inherited from StateFlowWithQueue | |
| void | notify () override |
| Wakeup call arrived. Schedules *this on the executor. | |
| bool | is_waiting () |
Public Member Functions inherited from StateFlowBase | |
| void | run () override |
| Callback from the executor. | |
| Service * | service () |
| Return a pointer to the service I am bound to. | |
Public Member Functions inherited from Executable | |
| void | test_deletion () |
Public Member Functions inherited from QMember | |
| void | init () |
| Initiailize a QMember, in place of a public placement construction. | |
Public Member Functions inherited from LinkedObject< StateFlowWithQueue > | |
| StateFlowWithQueue * | link_next () |
Public Member Functions inherited from FlowInterface< MessageType > | |
| virtual Pool * | pool () |
| virtual MessageType * | type_helper () |
| This function is never user in the code, but GDB can use it to infer the correct message types. | |
| MessageType * | alloc () |
| Synchronously allocates a message buffer from the pool of this flow. | |
| void | alloc_async (Executable *target) |
| Asynchronously allocates a message buffer from the pool of this flow. | |
Static Public Member Functions inherited from StateFlowBase | |
| template<class T , typename... Args> | |
| static void | invoke_subflow_and_ignore_result (FlowInterface< Buffer< T > > *target_flow, Args &&... args) |
| Calls a helper flow to perform some actions. | |
Static Public Member Functions inherited from LinkedObject< StateFlowWithQueue > | |
| static StateFlowWithQueue * | link_head () |
| static Atomic * | head_mu () |
| Locks the list for modification (at any entry!). | |
Static Public Member Functions inherited from FlowInterface< MessageType > | |
| static MessageType * | cast_alloc (QMember *entry) |
| Down casts and initializes an asynchronous allocation result to the appropriate flow's buffer type. | |
Static Protected Member Functions inherited from LinkedObject< StateFlowWithQueue > | |
| static StateFlowWithQueue * | link_head () |
| static Atomic * | head_mu () |
| Locks the list for modification (at any entry!). | |
Static Protected Attributes inherited from LinkedObject< StateFlowWithQueue > | |
| static StateFlowWithQueue * | head_ |
| Beginning of the list. | |
Definition at line 329 of file MemoryConfig.hxx.
|
protected |
Definition at line 343 of file MemoryConfig.hxx.
|
protected |
Definition at line 344 of file MemoryConfig.hxx.
|
protected |
Definition at line 345 of file MemoryConfig.hxx.
|
protected |
Definition at line 332 of file MemoryConfig.hxx.
|
inlineprotected |
Definition at line 337 of file MemoryConfig.hxx.
|
inlineprotected |
Definition at line 361 of file MemoryConfig.hxx.
|
inlineprotected |
Definition at line 367 of file MemoryConfig.hxx.
|
inlineprotected |
Returns the address from the incoming datagram.
Assumes that length >= 6
Definition at line 470 of file MemoryConfig.hxx.
|
inlineprotected |
Returns the read/write length from byte 6 or 7 of the incoming datagram, or -1 if the incoming datagram is of incorrect format.
Definition at line 434 of file MemoryConfig.hxx.
|
inlineprotected |
Returns the memory space number, or -1 if the incoming datagram is of incorrect format.
Assumes that the incoming datagram length is at least 2 (i.e., there is a command byte).
Definition at line 408 of file MemoryConfig.hxx.
|
inlineprotected |
Definition at line 462 of file MemoryConfig.hxx.
|
inlineprotected |
Definition at line 400 of file MemoryConfig.hxx.
|
inlineprotected |
Definition at line 522 of file MemoryConfig.hxx.
|
inlineprotectedvirtual |
This state is where the handling will end up after a respond_ok call.
The user is responsible to eventually doing release and exit().
Reimplemented from openlcb::DefaultDatagramHandler.
Definition at line 347 of file MemoryConfig.hxx.
|
inlineprotected |
Definition at line 516 of file MemoryConfig.hxx.
|
inlineprotected |
Definition at line 387 of file MemoryConfig.hxx.
|
inlineprotected |
@TODO(balazs.racz) Should this be here or elsewhere?
Definition at line 375 of file MemoryConfig.hxx.
|
inlineprotected |
Sets the address in the response payload buffer.
Definition at line 503 of file MemoryConfig.hxx.
|
inlineprotected |
Copies the address and memory space information from the incoming datagram to the outgoing datagram payload.
Modifies the low bits of the response command byte, if needed. Callers are advised to set the base command value before calling this function.
Definition at line 487 of file MemoryConfig.hxx.
|
protected |
Definition at line 530 of file MemoryConfig.hxx.
|
protected |
Definition at line 528 of file MemoryConfig.hxx.
|
protected |
Definition at line 529 of file MemoryConfig.hxx.