SafeCommLink - the CommServer-facing client link for a sim (train).
This is the Python client side of the safe-communication path introduced
with the C ``safeCommFreamwork`` / ``CommServer`` product:
TrainSim --(this module, plain TCP)--> CommServer --> RBC role-C gateway
CommServer owns the WEST/EAST dual-homing, so from the sim's point of view
there is a single logical link. It is a drop-in alternative to
``simcore.dual_link.DualHomedLink`` - same ``ensure_connected()`` /
``send_all()`` / ``poll_recv()`` surface - selected by ``train_sim`` when
the config carries a ``commServer`` block.
Stub, matching the C side: the Safety Functional Module (authentication,
per-message MAC, sequence numbering - ``safecomm::safety``) is
NOT_IMPLEMENTED, so this link is a transparent byte pipe with fixed
``message_size`` framing. When the SaF PDU layout lands in
``safeCommFreamwork`` this module gets the matching wrapper/unwrapper,
kept byte-identical the same way ``simcore.rbc_wire`` mirrors the C codec.