Single-port bus link implemented as a gen_statem.
Owns one transport, scheduling (queues, batching, stale expiry), in-flight exchange tracking, and caller replies.
States
:idle— no exchange in flight, ready to dispatch:awaiting— exchange sent, waiting for reply:unhealthy— transport dead, periodically attempts reopen
Summary
Functions
@spec start_link(keyword()) :: :gen_statem.start_ret()