Repository navigation
v0.3.0
IronFix 0.3.0
Initiator: live FIX sessions from ironfix-engine (#3)
ironfix-engine now ships a working client-side engine instead of config-only scaffolding:
Initiator— TCP dial (with connect timeout), framing viaironfix-transport::FixCodec, and a Logon handshake driven through theironfix-sessiontypestates (connect() → send_logon() → on_logon_ack()).- Background reactor task — owns the socket after logon: automatic Heartbeats, TestRequests with
is_timed_out()detection, sequence validation (ResendRequest on gap, SequenceReset-GapFill replies, PossDup handling), and session-level Reject onfrom_admin/from_apprejection. Connectionhandle — cloneable outbound sink (send), gracefullogout(),wait_closed()(fires on transport drop, counterparty logout, or heartbeat timeout),is_timed_out(), and sequence-state visibility (next_sender_seq/next_target_seq).Applicationcallbacks wired end to end:on_create,on_logon,on_logout,to_admin/from_admin,to_app/from_app.OutboundMessagebuilder — consumers provide body fields; the engine stamps the header (49/56/50/57/34/52) and trailer.Initiator::with_initial_sequences()for session continuity across consumer-supervised reconnects. Reconnect/backoff itself stays out of scope, per the supervision seam in Layer-V/otc-rfq#388.- New example:
fix44_engine_client(pairs withfix44_server); the stubfix44_servernow sends correct incrementing MsgSeqNum. - 11 integration tests covering logon, exchange, logout, transport drop, logon timeout/reject, heartbeats, TestRequest echo, heartbeat timeout, gap → ResendRequest, and sequence continuity.
Acceptor export is deferred: the acceptor-side loop (listener, Logon authentication, per-connection reactors) was not cheap to include here.
Dependency refresh
All external dependencies moved to their latest stable minor versions: tokio 1.52, bytes 1.12, smallvec 1.15, memchr 2.8, rust_decimal 1.42, quick-xml 0.41 (dictionary loader adapted to the new normalized_value(XmlVersion) API), plus futures-util for the reactor's Stream/Sink combinators.
Versioning
Workspace bumped 0.2.0 → 0.3.0 (0.x-major): ironfix-engine grows a new public API surface and dependency floors moved.