Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
openlcb::WriteHelper Class Reference

A statically allocated buffer for sending one message to the OpenLCB bus. More...

#include <WriteHelper.hxx>

Inheritance diagram for openlcb::WriteHelper:
Executable Notifiable QMember Destructable

Public Types

typedef Nodenode_type
 
typedef string payload_type
 

Public Member Functions

const payload_type & last_payload ()
 
void clear_last_payload ()
 
void set_wait_for_local_loopback (bool wait=true)
 
void WriteAsync (Node *node, Defs::MTI mti, NodeHandle dst, const payload_type &buffer, Notifiable *done)
 Originates an NMRAnet message from a particular node.
 
- Public Member Functions inherited from Executable
void test_deletion ()
 
void notify () override
 Crashes the program – everyone who is expecting notify calls must override this function.
 
- Public Member Functions inherited from QMember
void init ()
 Initiailize a QMember, in place of a public placement construction.
 

Static Public Member Functions

static NodeHandle global ()
 

Private Member Functions

void alloc_result (QMember *entry) override
 Return the result of an alloc_async() from a memory Pool.
 
void run () override
 Entry point.
 

Private Attributes

unsigned waitForLocalLoopback_: 1
 
NodeHandle dst_
 
Defs::MTI mti_
 
Nodenode_
 
payload_type buffer_
 
BarrierNotifiable done_
 

Additional Inherited Members

- Protected Member Functions inherited from QMember
 QMember ()
 Constructor.
 
 ~QMember ()
 Destructor.
 
- Protected Attributes inherited from QMember
QMembernext
 pointer to the next member in the queue
 

Detailed Description

A statically allocated buffer for sending one message to the OpenLCB bus.

This buffer is reusable, as soon as the done notifiable is called, the buffer is free for sending the next packet.

Definition at line 51 of file WriteHelper.hxx.

Member Typedef Documentation

◆ node_type

Definition at line 54 of file WriteHelper.hxx.

◆ payload_type

typedef string openlcb::WriteHelper::payload_type

Definition at line 55 of file WriteHelper.hxx.

Constructor & Destructor Documentation

◆ WriteHelper()

openlcb::WriteHelper::WriteHelper ( )
inline

Definition at line 62 of file WriteHelper.hxx.

Member Function Documentation

◆ alloc_result()

void openlcb::WriteHelper::alloc_result ( QMember item)
inlineoverrideprivatevirtual

Return the result of an alloc_async() from a memory Pool.

Parameters
itemresult of the the allocation

Reimplemented from Executable.

Definition at line 126 of file WriteHelper.hxx.

◆ clear_last_payload()

void openlcb::WriteHelper::clear_last_payload ( )
inline

Definition at line 72 of file WriteHelper.hxx.

◆ global()

static NodeHandle openlcb::WriteHelper::global ( )
inlinestatic

Definition at line 57 of file WriteHelper.hxx.

◆ last_payload()

const payload_type & openlcb::WriteHelper::last_payload ( )
inline

Definition at line 67 of file WriteHelper.hxx.

◆ run()

void openlcb::WriteHelper::run ( )
inlineoverrideprivatevirtual

Entry point.

This funciton will be called when *this gets scheduled on the CPU.

Implements Executable.

Definition at line 160 of file WriteHelper.hxx.

◆ set_wait_for_local_loopback()

void openlcb::WriteHelper::set_wait_for_local_loopback ( bool  wait = true)
inline

Definition at line 77 of file WriteHelper.hxx.

◆ WriteAsync()

void openlcb::WriteHelper::WriteAsync ( Node node,
Defs::MTI  mti,
NodeHandle  dst,
const payload_type &  buffer,
Notifiable done 
)
inline

Originates an NMRAnet message from a particular node.

Parameters
nodeis the originating node.
mtiis the message to send
dstis the destination node to send to (may be global())
bufferis the message payload.
donewill be notified when the packet has been enqueued to the physical layer. If done == nullptr, the sending is invoked synchronously.

Definition at line 91 of file WriteHelper.hxx.

Member Data Documentation

◆ buffer_

payload_type openlcb::WriteHelper::buffer_
private

Definition at line 169 of file WriteHelper.hxx.

◆ done_

BarrierNotifiable openlcb::WriteHelper::done_
private

Definition at line 170 of file WriteHelper.hxx.

◆ dst_

NodeHandle openlcb::WriteHelper::dst_
private

Definition at line 166 of file WriteHelper.hxx.

◆ mti_

Defs::MTI openlcb::WriteHelper::mti_
private

Definition at line 167 of file WriteHelper.hxx.

◆ node_

Node* openlcb::WriteHelper::node_
private

Definition at line 168 of file WriteHelper.hxx.

◆ waitForLocalLoopback_

unsigned openlcb::WriteHelper::waitForLocalLoopback_
private

Definition at line 165 of file WriteHelper.hxx.


The documentation for this class was generated from the following file: