Detailed Description

An nDevice implements networked IO via a simple TCP/IP protocol.

Networking

The purpose of this implementation of networked discrete events is to provide a basis for case studies. However, simple networked events via nDevice must not be confused with ongoing research that addresses synchronisation and real time behaviour. We take a really pragmatic approach here.

Our network is identified by its network name. It consists a number of nodes, each identified by its node name. In the current implementation, each node knows about the entire network ie knows about all other nodes. Each node plays two roles:

  • the server role to send event notifications, and
  • the client role to receive event notifications.

In their server role, each node is configured to listen on its server port for incomming TCP connections. When a client (i.e. some other node in client role) connects to the TCP port, the server replies to a simple command set in order to allow the client to subscribe to the nodes output events. When the application executes an output event on the node, this is notified to all connected clients and the clients will interpret the event as an input reading. Vice versa, the each node itself has the role of a client and subscribes to relevant output events served by other nodes in their server role.

Protocol Details

The protocol for commands and notification is libFAUDES-token based and can be inspected eg via nc or telnet; see the shell script in the tutorial. Event notifications are sent spontaneous to all connected clients in the format <Notify> Ev </Notify>. Commands are accepted in the format <Cmd> Command </Cmd> and will be answered accordingly.

Command via TCP Reply
<Cmd> Info </Cmd> configuration of node as token string (<SimplenetDevice name="SimpleMachine"> ... </SimplenetDevice> )
<Cmd> Status </Cmd> acknowledgement with status string (<Ack> Up </Ack>, <Ack> StartUp </Ack> or <Ack> ShutDown </Ack>, respectively; will not connect/reply while Down)
<Cmd> ResetRequest </Cmd> no acknowledgement
<Subscribe> Ev_1 ... Ev_N </Subscribe> subset of available events (e.g. <Subscribed> Ev_2 Ev_7 Ev_9 </Subscribed>)

A minimal alternative implementation for a node consists of (1) a TCP server that ignores all incomming messages and issues event notifications to any relevant events; and, (2) a TCP client that subscribes to all events and then listens to event notifications. All other commands are optional and may change in future revisions of this protocol.

Name Resolution

On the technical side, each node needs to figure the IP addresses incl TCP ports on which the other nodes provide their service. To ease configuration, this information is distributed by UDP datagrams. In order to locate the other nodes within the network, a node may broadcasts a network request datagramm. Each node that receives such a request, replies with an advert datagramm to provide its address. Thus, the simple net nodes rely on some underlying name resolution by DNS services, but node configuration itself refers to simple-net node names only. Since each node knows about the names of all participating nodes, each node will know when all connections are up.

By default, UDP broadcasts are addressed to 255.255.255.255:40000. Since routers are not meant to pass-on broadcasts, nDevice name resolution is restricted to one subnet. If the local host is connected to multiple subnets, you need to specify the relevant subset explicitly by setting the appropriate broadcast address, e.g. 192.168.2.255:40000. To restrict networks to the local machine, set the broadcast address to the loopback device 127.0.0.1:40000. To span a network accross multiple subnets, server addresses can be explicitly specified as an attribute in the node configuration; e.g. <Node> name="SimpleSupervisor" address="192.168.2.1:40000"</Node>. This is also the preferred fallback when address resolution fails for other reasons.

Broadcast via UDP Reply
<Request> network reqnode </Request> advertisement of networkname, nodename and ip-address:port, e.g.,
<Advert> SimpleLoop SimpleSupervisor 192.168.2.1:40000 </Advert>

File IO

For token IO, the nDevice reads and writes a section with label
"SimplenetDevice". There are no relevant attributes yet. Simple machine example:

<SimplenetDevice name="SimpleMachine">
<!-- Time scale in ms/ftiu -->
<TimeScale value="1000"/>
<!-- IP address of this node, incl. server TCP port -->
<ServerAddress value="localhost:40000"/>
<!-- Broadcaset address for node resolution (optional)
<BroadcastAddress value="255.255.255.255:40000"/>
<!-- Network topology -->
<Network name="SimpleLoop">
<Node name="SimpleMachine"/>
<Node name="SimpleSupervisor"/>
</Network>
<!-- Event configuration -->
<EventConfiguration>
<Event name="alpha" iotype="input"/>
<Event name="beta" iotype="output"/>
<Event name="mue" iotype="output"/>
<Event name="lambda" iotype="input"/>
</EventConfiguration>
</SimplenetDevice>
void BroadcastAddress(const std::string &rAddr)
Set broadcast address for address resolution Note: you can only set the broadcast address while the d...
void ServerAddress(const std::string &rAddr)
Set server address of this node.
virtual int TimeScale(void)
Get timescale.
Definition: iop_vdevice.h:374
TNode< Idx, Idx > Node

Implementation Notes

The current status of the code is premature; network io assumes reasonably large buffers; thread/select mechanism is inefficient; exception handling wont work; etc etc

Definition at line 435 of file iop_simplenet.h.

#include <iop_simplenet.h>

Classes

struct  ClientState
 Background: state of a connection to a client (shared) More...
 
struct  ServerState
 Background: state of a connection to an event server (shared) More...
 

Public Member Functions

 nDevice (void)
 Default constructor. More...
 
virtual ~nDevice (void)
 Explicit destructor. More...
 
virtual void Clear (void)
 Clear all configuration. More...
 
void ServerAddress (const std::string &rAddr)
 Set server address of this node. More...
 
void BroadcastAddress (const std::string &rAddr)
 Set broadcast address for address resolution Note: you can only set the broadcast address while the device is down. More...
 
void NetworkName (const std::string &rNetwork)
 Set network name to participate. More...
 
void InsNode (const std::string &rNodeName)
 Add a node to the network configuration. More...
 
void InsNodeAddress (const std::string &rNode, const std::string &rAddress)
 Add entry to node name resolution. More...
 
void ClearNodes (void)
 Add a node to the network configuration. More...
 
void InsInputEvent (const std::string &event)
 Insert event as input event. More...
 
void InsOutputEvent (const std::string &event)
 Insert event as output event. More...
 
virtual void Compile (void)
 Set up internal data structures. More...
 
virtual void Start (void)
 Activate the device. More...
 
virtual void Stop (void)
 Deactivate the device. More...
 
virtual void Reset (void)
 Reset device. More...
 
virtual void WriteOutput (Idx output)
 Run output command. More...
 
- Public Member Functions inherited from faudes::vDevice
 vDevice (void)
 Default constructor. More...
 
virtual ~vDevice (void)
 Explicit destructor. More...
 
void Name (const std::string &rName)
 Set the device name. More...
 
const std::string & Name (void) const
 Get device name. More...
 
void Tolerance (Time::Type maxgap)
 Set tolerance for time synchonisation. More...
 
Time::Type Tolerance (void)
 Get tolerance. More...
 
virtual void TimeScale (unsigned int scale)
 Set timescale. More...
 
virtual int TimeScale (void)
 Get timescale. More...
 
virtual void Configure (Idx event, const AttributeDeviceEvent &attr)
 Insert/edit input or output configuration. More...
 
virtual void Configure (const EventSet &rPhysicalEvents)
 Configure by alphabet. More...
 
virtual const EventSetOutputs (void) const
 Get outputs as plain set. More...
 
virtual const EventSetInputs (void) const
 Get inputs as plain set. More...
 
virtual bool ResetRequest (void)
 A device may ask for a reset by returning true for ResetRequest(). More...
 
virtual DeviceState Status (void)
 Get status. More...
 
virtual std::string StatusString (void)
 Get status as infromal string. More...
 
virtual void FlushOutputs (void)
 Flush pending IO Operations. More...
 
virtual Idx ReadInput (void)
 Read sensed input events. More...
 
virtual Idx PeekInput (void)
 Peek for sensed events. More...
 
virtual bool InputReady (void)
 Report whether a input-event is ready. More...
 
virtual bool WaitInputs (Time::Type duration)
 Wait for input trigger. More...
 
virtual bool WaitInputsMs (long int duration)
 Wait for input trigger. More...
 
virtual Time::Type CurrentTime (void)
 Report physical time in ftu. More...
 
virtual long int CurrentTimeMs (void)
 Report physical time in ms. More...
 
virtual void CurrentTime (Time::Type now)
 Set physical time in ftu. More...
 
virtual void CurrentTimeMs (long int nowms)
 Set physical time in ms. More...
 
virtual faudes_systime_t FtuToSystemTime (Time::Type duration)
 Convert faudes time unit duration to system time. More...
 
void UseCondition (faudes_mutex_t *wmutex, faudes_cond_t *wcond)
 Tell the device which condition to use for waiting. More...
 
void UseBuffer (faudes_mutex_t *bmutex, std::deque< Idx > *bbuffer)
 Tell the device which buffer to use for inputs. More...
 
virtual std::string EStr (Idx ev)
 Convenience method. More...
 
SampledDensityFunction Performance (void)
 Get performance (need compiletime option) More...
 
void ResetPerformance (void)
 Clear performance (need compiletime option) More...
 
void WritePerformance (void)
 Convenience method. More...
 
- Public Member Functions inherited from faudes::Type
 Type (void)
 Constructor. More...
 
 Type (const Type &rType)
 Copy constructor. More...
 
virtual ~Type (void)
 Destructor. More...
 
virtual TypeNew (void) const
 Construct on heap. More...
 
virtual TypeCopy (void) const
 Construct on heap. More...
 
virtual const TypeCast (const Type *pOther) const
 Cast other object to this type. More...
 
virtual TypeAssign (const Type &rSrc)
 Assign configuration data from other object. More...
 
virtual Typeoperator= (const Type &rSrc)
 Assign configurationdata from other object. More...
 
virtual bool Equal (const Type &rOther) const
 Test equality of configuration data. More...
 
virtual bool operator== (const Type &rOther) const
 Test equality of configuration data. More...
 
virtual bool operator!= (const Type &rOther) const
 Test equality of configuration data. More...
 
virtual const std::string & TypeName (void) const
 Get objects's type name. More...
 
void Write (const Type *pContext=0) const
 Write configuration data to console. More...
 
void Write (const std::string &pFileName, const std::string &rLabel="", const Type *pContext=0, std::ios::openmode openmode=std::ios::out|std::ios::trunc) const
 Write configuration data to a file. More...
 
void Write (const std::string &pFileName, std::ios::openmode openmode) const
 Write configuration data to a file. More...
 
void Write (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data to TokenWriter. More...
 
virtual void XWrite (const std::string &pFileName, const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data to an XML file. More...
 
void XWrite (const Type *pContext=0) const
 Write configuration data in XML format to concole Note: this write function uses the virtual function DoXWrite(), to be reimplemented by derived classes. More...
 
void XWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data in XML format to TokenWriter. More...
 
std::string ToString (const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data to a string. More...
 
std::string ToText (const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data to a formated string. More...
 
void DWrite (const Type *pContext=0) const
 Write configuration data to console, debugging format. More...
 
void DWrite (const std::string &pFileName, const std::string &rLabel="", const Type *pContext=0, std::ios::openmode openmode=std::ios::out|std::ios::trunc) const
 Write configuration data to a file, debugging format. More...
 
void DWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data in debug format to TokenWriter. More...
 
void SWrite (TokenWriter &rTw) const
 Write statistics comment to TokenWriter. More...
 
void SWrite (void) const
 Write statistics comment to console. More...
 
std::string ToSText (void) const
 Write statistics to a string. More...
 
void Read (const std::string &rFileName, const std::string &rLabel="", const Type *pContext=0)
 Read configuration data from file with label specified. More...
 
void FromString (const std::string &rString, const std::string &rLabel="", const Type *pContext=0)
 Read configuration data from a string. More...
 
void Read (TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0)
 Read configuration data from TokenReader with label sepcified. More...
 

Protected Member Functions

virtual void DoReadPreface (TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0)
 Actual method to read device configuration from tokenreader. More...
 
virtual void DoWritePreface (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Actual method to write the device configuration to a TokenWriter. More...
 
- Protected Member Functions inherited from faudes::vDevice
virtual void DoWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Token output, see Type::Write for public wrappers. More...
 
virtual void DoWriteConfiguration (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Writes event-configuration to TokenWriter. More...
 
virtual void DoRead (TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0)
 Token input, see Type::DRead for public wrappers. More...
 
virtual void DoReadConfiguration (TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0)
 Reads event-configuration data from TokenReader. More...
 
virtual long int FtuToMs (Time::Type faudes_time)
 convert duration from fauDES-time units to ms More...
 
virtual Time::Type MsToFtu (long int real_time)
 convert duration in ms to faudes-time units More...
 
- Protected Member Functions inherited from faudes::Type
void DoAssign (const Type &rSrc)
 Assign configuration data from other object. More...
 
bool DoEqual (const Type &rOther) const
 Test equality of configuration data. More...
 
virtual void DoXWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data of this object to TokenWriter in XML format. More...
 
virtual void DoDWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data in debugging format to TokenWriter. More...
 
virtual void DoSWrite (TokenWriter &rTw) const
 Write statistical data as a comment to TokenWriter. More...
 
virtual const TypeDefinitionTypeDefinitionp (void) const
 Get objects's type definition. More...
 
virtual Token XBeginTag (const std::string &rLabel="", const std::string &rFallbackLabel="") const
 

Protected Attributes

TaNameSet< AttributeSimplenetEvent > * pConfiguration
 Overall configuration (with actual type) More...
 
std::string mNetwork
 Simplenet: network id. More...
 
SimplenetAddress mListenAddress
 Simplenet: address of my server incl port (localhost:40000) More...
 
SimplenetAddress mBroadcastAddress
 Simplenet: address for udp broadcast (255.255.255.255:40000. More...
 
SimplenetAddress mEffectiveListenAddress
 Simplenet: effective address of my server port. More...
 
std::map< std::string, std::string > mNetworkNodes
 Simplenet: list of nodes in this network incl default addresses. More...
 
std::map< std::string, EventSetmInputSubscriptions
 Compiled data: map subscriptions. More...
 
faudes_mutex_t mMutex
 Background: mutex for below shared variables. More...
 
faudes_thread_t mThreadListen
 Background: thread handle (global) More...
 
bool mStopListen
 Background: request to join via flag (mutexed) More...
 
int mListenSocket
 Background: server socket to listen (background only) More...
 
int mBroadcastSocket
 Background: udp broadcast socket (background only) More...
 
std::map< int, ClientStatemOutputClientStates
 Background: map sockets to connection states (shared) More...
 
std::map< std::string, ServerStatemInputServerStates
 Background: connection states to event servers (by node name) More...
 
- Protected Attributes inherited from faudes::vDevice
std::string mDefaultLabel
 Default label for token io. More...
 
std::string mName
 Name. More...
 
EventSetmpConfiguration
 Overall event configuration (uses cast for type) More...
 
EventSet mInputs
 All inputs. More...
 
EventSet mOutputs
 All outputs. More...
 
DeviceState mState
 Status: running, starting etc. More...
 
faudes_mutex_t mWaitMutex
 Default Wait Condition Mutex. More...
 
faudes_cond_t mWaitCondition
 Default Wait Condition. More...
 
faudes_mutex_t * pWaitMutex
 Actual Wait Condition Mutex. More...
 
faudes_cond_t * pWaitCondition
 Actual Wait Condition. More...
 
faudes_systime_t mTimeZero
 physical timepoint zero
More...
 
int mTimeScale
 FauDES-time: scaling factor in ms/ftu. More...
 
Time::Type mMaxSyncGap
 Toleance for time sync. More...
 
std::deque< IdxmInputBuffer
 Default Fifo buffer for input readings. More...
 
std::deque< Idx > * pInputBuffer
 Actual Fifo buffer for input readings. More...
 
faudes_mutex_t mBufferMutex
 Default mutex for input buffer (mutexted) More...
 
faudes_mutex_t * pBufferMutex
 Actual mutex for input buffer (mutexted) More...
 
bool mResetRequest
 Reset request marker (mutexed) More...
 
faudes_systime_t * mpPerformanceWaitEnter
 Structures to store time-samples in. More...
 
faudes_systime_t * mpPerformanceWaitExit
 
int mPerformanceEndIterator
 Global iterator. More...
 
int mPerformanceBeginIterator
 

Friends

void * NDeviceListen (void *)
 
void * NDeviceServer (void *)
 
void * NDeviceReply (void *)
 

Additional Inherited Members

- Public Types inherited from faudes::vDevice
enum  DeviceState { Down , StartUp , Up , ShutDown }
 Enum for device stages. More...
 
- Static Public Member Functions inherited from faudes::vDevice
static vDeviceFromTokenReader (TokenReader &rTr)
 Construct on heap from token reader. More...
 
static vDeviceFromFile (const std::string &rFileName)
 Construct on heap from file. More...
 
static void StopAll (void)
 Stop all devices. More...
 

Constructor & Destructor Documentation

◆ nDevice()

faudes::nDevice::nDevice ( void  )

Default constructor.

Definition at line 265 of file iop_simplenet.cpp.

◆ ~nDevice()

faudes::nDevice::~nDevice ( void  )
virtual

Explicit destructor.

Definition at line 283 of file iop_simplenet.cpp.

Member Function Documentation

◆ BroadcastAddress()

void faudes::nDevice::BroadcastAddress ( const std::string &  rAddr)

Set broadcast address for address resolution Note: you can only set the broadcast address while the device is down.

Parameters
rAddrAddress for UDP broadcasts e.g. "255.255.255.255:40000"
Exceptions
Exception
  • No valid address (id 551) (NOT IMPLEMENTED)

Definition at line 308 of file iop_simplenet.cpp.

◆ Clear()

void faudes::nDevice::Clear ( void  )
virtual

Clear all configuration.

This implies Stop().

Reimplemented from faudes::vDevice.

Definition at line 292 of file iop_simplenet.cpp.

◆ ClearNodes()

void faudes::nDevice::ClearNodes ( void  )

Add a node to the network configuration.

Note: you can only configure the network while the device is down.

Definition at line 333 of file iop_simplenet.cpp.

◆ Compile()

void faudes::nDevice::Compile ( void  )
virtual

Set up internal data structures.

Reimplemented from faudes::vDevice.

Definition at line 358 of file iop_simplenet.cpp.

◆ DoReadPreface()

void faudes::nDevice::DoReadPreface ( TokenReader rTr,
const std::string &  rLabel = "",
const Type pContext = 0 
)
protectedvirtual

Actual method to read device configuration from tokenreader.

This method calls the base class to read the device name and the the timescale. It then reads address, networkid and nodes. Overall device configuration is consists of DoReadPreface, DoReadConfiguration and Compile. It isimplemented in vDevice. The label and context parameters are ignored.

Parameters
rTrTokenReader to read from
rLabelSection to read
pContextRead context to provide contextual information
Exceptions
Exception
  • IO error (id 1)

Reimplemented from faudes::vDevice.

Definition at line 399 of file iop_simplenet.cpp.

◆ DoWritePreface()

void faudes::nDevice::DoWritePreface ( TokenWriter rTw,
const std::string &  rLabel = "",
const Type pContext = 0 
) const
protectedvirtual

Actual method to write the device configuration to a TokenWriter.

This method calls the base class vDevice to write the device name and the time scale. It then writes network related data. The label and context parameters are ignored.

Parameters
rTwReference to TokenWriter
rLabelLabel of section to write
pContextRead context to provide contextual information
Exceptions
Exception
  • IO errors (id 2)

Reimplemented from faudes::vDevice.

Definition at line 367 of file iop_simplenet.cpp.

◆ InsInputEvent()

void faudes::nDevice::InsInputEvent ( const std::string &  event)

Insert event as input event.

Note: you can only configure events while the device is down.

Parameters
eventEvent by name.

Definition at line 339 of file iop_simplenet.cpp.

◆ InsNode()

void faudes::nDevice::InsNode ( const std::string &  rNodeName)

Add a node to the network configuration.

Note: you can only configure the network while the device is down.

Parameters
rNodeNameNode to participate in wthe network.

Definition at line 321 of file iop_simplenet.cpp.

◆ InsNodeAddress()

void faudes::nDevice::InsNodeAddress ( const std::string &  rNode,
const std::string &  rAddress 
)

Add entry to node name resolution.

Note: you can only configure the network while the device is down.

Parameters
rNodeName of node to register
rAddressAddress incl port

Definition at line 327 of file iop_simplenet.cpp.

◆ InsOutputEvent()

void faudes::nDevice::InsOutputEvent ( const std::string &  event)

Insert event as output event.

Note: you can only configure event while the device is down.

Parameters
eventEvent by name.

Definition at line 348 of file iop_simplenet.cpp.

◆ NetworkName()

void faudes::nDevice::NetworkName ( const std::string &  rNetwork)

Set network name to participate.

Note: you can only set the network name while the device is down.

Parameters
rNetworkName of network, e.g. "ElevatorNetwork"

Definition at line 315 of file iop_simplenet.cpp.

◆ Reset()

void faudes::nDevice::Reset ( void  )
virtual

Reset device.

Resets buffered input events and current time.

Reimplemented from faudes::vDevice.

Definition at line 1275 of file iop_simplenet.cpp.

◆ ServerAddress()

void faudes::nDevice::ServerAddress ( const std::string &  rAddr)

Set server address of this node.

Note: you can only set th server address while the device is down.

Parameters
rAddrAddress on which to run this server, e.g. "localhost:40000"
Exceptions
Exception
  • No valid address (id 551) (NOT IMPLEMENTED)

Definition at line 302 of file iop_simplenet.cpp.

◆ Start()

void faudes::nDevice::Start ( void  )
virtual

Activate the device.

This function enables output execution and input reading. It starts the background thread for incomming connections and tries to connect to relevant servers.

Exceptions
Exception
  • Not yet configured (id 551)
  • Fatal network error (id 553)
  • Fatal thread error (id 554)

Reimplemented from faudes::vDevice.

Definition at line 536 of file iop_simplenet.cpp.

◆ Stop()

void faudes::nDevice::Stop ( void  )
virtual

Deactivate the device.

This function disables output execution and input reading. It stops the backhround thread to provide connections and disconnects from any servers.

Reimplemented from faudes::vDevice.

Definition at line 634 of file iop_simplenet.cpp.

◆ WriteOutput()

void faudes::nDevice::WriteOutput ( Idx  output)
virtual

Run output command.

Exceptions
Exception
  • unknown output event (id 65)

Implements faudes::vDevice.

Definition at line 485 of file iop_simplenet.cpp.

Friends And Related Function Documentation

◆ NDeviceListen

void* NDeviceListen ( void *  )
friend

Definition at line 677 of file iop_simplenet.cpp.

◆ NDeviceReply

void* NDeviceReply ( void *  )
friend

◆ NDeviceServer

void* NDeviceServer ( void *  )
friend

Member Data Documentation

◆ mBroadcastAddress

SimplenetAddress faudes::nDevice::mBroadcastAddress
protected

Simplenet: address for udp broadcast (255.255.255.255:40000.

Definition at line 640 of file iop_simplenet.h.

◆ mBroadcastSocket

int faudes::nDevice::mBroadcastSocket
protected

Background: udp broadcast socket (background only)

Definition at line 664 of file iop_simplenet.h.

◆ mEffectiveListenAddress

SimplenetAddress faudes::nDevice::mEffectiveListenAddress
protected

Simplenet: effective address of my server port.

Definition at line 643 of file iop_simplenet.h.

◆ mInputServerStates

std::map<std::string,ServerState> faudes::nDevice::mInputServerStates
protected

Background: connection states to event servers (by node name)

Definition at line 687 of file iop_simplenet.h.

◆ mInputSubscriptions

std::map<std::string,EventSet> faudes::nDevice::mInputSubscriptions
protected

Compiled data: map subscriptions.

Definition at line 649 of file iop_simplenet.h.

◆ mListenAddress

SimplenetAddress faudes::nDevice::mListenAddress
protected

Simplenet: address of my server incl port (localhost:40000)

Definition at line 637 of file iop_simplenet.h.

◆ mListenSocket

int faudes::nDevice::mListenSocket
protected

Background: server socket to listen (background only)

Definition at line 661 of file iop_simplenet.h.

◆ mMutex

faudes_mutex_t faudes::nDevice::mMutex
protected

Background: mutex for below shared variables.

Definition at line 652 of file iop_simplenet.h.

◆ mNetwork

std::string faudes::nDevice::mNetwork
protected

Simplenet: network id.

Definition at line 634 of file iop_simplenet.h.

◆ mNetworkNodes

std::map<std::string,std::string> faudes::nDevice::mNetworkNodes
protected

Simplenet: list of nodes in this network incl default addresses.

Definition at line 646 of file iop_simplenet.h.

◆ mOutputClientStates

std::map<int, ClientState> faudes::nDevice::mOutputClientStates
protected

Background: map sockets to connection states (shared)

Definition at line 675 of file iop_simplenet.h.

◆ mStopListen

bool faudes::nDevice::mStopListen
protected

Background: request to join via flag (mutexed)

Definition at line 658 of file iop_simplenet.h.

◆ mThreadListen

faudes_thread_t faudes::nDevice::mThreadListen
protected

Background: thread handle (global)

Definition at line 655 of file iop_simplenet.h.

◆ pConfiguration

TaNameSet<AttributeSimplenetEvent>* faudes::nDevice::pConfiguration
protected

Overall configuration (with actual type)

Definition at line 631 of file iop_simplenet.h.


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

libFAUDES 2.32b --- 2024.03.01 --- c++ api documentaion by doxygen