Changelog

View Source

Unreleased

  • FixAlchemy.MessageStore.Dets stores sent messages in a file per session, so a session resuming its sequence numbers can replay the original messages instead of gap-filling them.
  • NextExpectedMsgSeqNum(789) in Logon, for both roles, behind :next_expected_msg_seq_num. A counterparty reporting a number behind what this session sent is resent the difference without waiting for a ResendRequest; one reporting a number beyond it is logged out.
  • FixAlchemy.Engine.session_key/1 names the identity a session's storage is keyed by, and the engine passes it to FixAlchemy.MessageStore.new/1.

0.1.0

Initial release.

Session protocol

  • FixAlchemy.Engine runs the session protocol for one connection, independent of which side dialed: framing, sequence numbers, heartbeats and TestRequests, ResendRequests and replay, and delivery to subscribers.
  • FixAlchemy.Client initiates: dials, sends the Logon, reconnects with backoff.
  • FixAlchemy.Server accepts: listens over TCP or TLS, matches each Logon to a configured session, and refuses one that matches nothing, fails credentials, or names a session already connected.

Dictionaries

  • Generates field, message, and repeating-group parsers from a venue's FIX XML, including the FIXT1.1.xml and FIX50SP2.xml pair a FIX 5.0 session needs.
  • FixAlchemy.Engine.Validation checks inbound messages against the dictionary and answers a bad one with a Reject naming the SessionRejectReason.

Routing and market data

  • FixAlchemy.Dispatch routes inbound messages to subscribers by MsgType, by a tag equalling a value, or by a predicate over a tag.
  • FixAlchemy.Feed publishes one price to many sessions through a tree of venue transforms, applying each transform once however many sessions sit below it.

Storage

  • FixAlchemy.MessageStore retains sent messages for replay; in-memory by default.
  • FixAlchemy.SessionStore carries sequence numbers across connections and restarts, keyed by BeginString, SenderCompID and TargetCompID; ETS-backed implementation included.