SimCore
Shared transport-layer plumbing for the ADR-029 Train/IL/CTC RBC simulators
Loading...
Searching...
No Matches
simcore.safecomm.SafeCommLink Class Reference

Public Member Functions

 __init__ (self, log, host, port, message_size)
 ensure_connected (self)
 sockets (self)
 connected_sites (self)
 disconnect (self, site=None)
 send_all (self, payload)
 poll_recv (self, timeout=0.0)

Public Attributes

 message_size = int(message_size)

Protected Member Functions

 _close (self, site=None)
 _frame (self, payload)

Protected Attributes

 _log = log
 _host = host
 _port = int(port)
 _sock = None
 _rx = bytearray()
float _last_attempt = 0.0
bool _ever_connected = False

Detailed Description

Single TCP link to a CommServer, framed as fixed-size messages.
Auto-reconnecting: any send/recv error drops the socket, and the next
ensure_connected() re-dials (rate-limited).

Definition at line 42 of file safecomm.py.

Constructor & Destructor Documentation

◆ __init__()

simcore.safecomm.SafeCommLink.__init__ ( self,
log,
host,
port,
message_size )

Definition at line 47 of file safecomm.py.

Member Function Documentation

◆ _close()

simcore.safecomm.SafeCommLink._close ( self,
site = None )
protected

Definition at line 102 of file safecomm.py.

◆ _frame()

simcore.safecomm.SafeCommLink._frame ( self,
payload )
protected

Definition at line 112 of file safecomm.py.

◆ connected_sites()

simcore.safecomm.SafeCommLink.connected_sites ( self)

Definition at line 96 of file safecomm.py.

◆ disconnect()

simcore.safecomm.SafeCommLink.disconnect ( self,
site = None )

Definition at line 99 of file safecomm.py.

◆ ensure_connected()

simcore.safecomm.SafeCommLink.ensure_connected ( self)
One non-blocking (re)connect attempt, rate-limited. Safe to call
every cycle - a no-op once connected. Returns True if connected.

Definition at line 58 of file safecomm.py.

◆ poll_recv()

simcore.safecomm.SafeCommLink.poll_recv ( self,
timeout = 0.0 )
Yield ``(site, message_bytes)`` for every whole framed message
available within ``timeout`` seconds.

Definition at line 132 of file safecomm.py.

◆ send_all()

simcore.safecomm.SafeCommLink.send_all ( self,
payload )
Send one message to the CommServer (padded/truncated to
``message_size``). Silently drops if not connected - the caller's
own ``ensure_connected()`` loop re-establishes.

Definition at line 120 of file safecomm.py.

◆ sockets()

simcore.safecomm.SafeCommLink.sockets ( self)
DualHomedLink-compatible view: WEST slot carries the one TCP
socket, EAST slot is always None.

Definition at line 91 of file safecomm.py.

Member Data Documentation

◆ _ever_connected

bool simcore.safecomm.SafeCommLink._ever_connected = False
protected

Definition at line 55 of file safecomm.py.

◆ _host

simcore.safecomm.SafeCommLink._host = host
protected

Definition at line 49 of file safecomm.py.

◆ _last_attempt

simcore.safecomm.SafeCommLink._last_attempt = 0.0
protected

Definition at line 54 of file safecomm.py.

◆ _log

simcore.safecomm.SafeCommLink._log = log
protected

Definition at line 48 of file safecomm.py.

◆ _port

simcore.safecomm.SafeCommLink._port = int(port)
protected

Definition at line 50 of file safecomm.py.

◆ _rx

simcore.safecomm.SafeCommLink._rx = bytearray()
protected

Definition at line 53 of file safecomm.py.

◆ _sock

simcore.safecomm.SafeCommLink._sock = None
protected

Definition at line 52 of file safecomm.py.

◆ message_size

simcore.safecomm.SafeCommLink.message_size = int(message_size)

Definition at line 51 of file safecomm.py.


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