35#ifndef _OPENLCB_IFTCP_HXX_
36#define _OPENLCB_IFTCP_HXX_
Base class of everything with a virtual destructor.
An object that can be scheduled on an executor to run.
An object that can schedule itself on an executor to run.
Implementation of sequence number generator that uses the real clock.
Network interface class for a character stream link that speaks the (point-to-point) TcpTransfer prot...
TcpSendFlow * sendFlow_
Flow used for converting GenMessage into the binary representation.
bool matching_node(NodeHandle expected, NodeHandle actual) override
void delete_owned_flow(Destructable *d)
Finds a given pointer in the owned flows list, deletes it and removes it from the list.
void delete_local_node(Node *node) override
Removes a local node from this interface.
void add_owned_flow(Executable *e) override
Transfers ownership of a module to the interface.
void add_network_fd(int fd, Notifiable *on_error=nullptr)
Adds a network client connection to the device.
HubFlow * device_
Where to send traffic to.
ClockBaseSequenceNumberGenerator * seq_
Sequence number generator for outgoing TCP packets.
void add_owned_flow(Destructable *e)
Transfers ownership of a module to the interface.
std::vector< std::unique_ptr< Destructable > > ownedFlows_
Various implementation control flows that this interface owns.
NodeID get_default_node_id() override
TcpRecvFlow * recvFlow_
Flow for parsing incoming messages. Owned by ownedFlows_.
Abstract class representing an OpenLCB Interface.
Base class for NMRAnet nodes conforming to the asynchronous interface.
Simple stateless translator for incoming TCP messages from binary format into the structured format.
This flow renders outgoing OpenLCB messages to their TCP stream representation.
uint64_t NodeID
48-bit NMRAnet Node ID type
Container of both a NodeID and NodeAlias.
This is not used at the moment, as TCP packet routing is not supported yet.
NodeHandle dst
Destination node, or {0,0} for broadcast. Helper function for routing.
string data
Rendered string for the message payload.