ExFix.Session (ex_fix v0.2.8)

FIX session protocol implementation

Summary

Functions

Returns session's extra bytes to be processed with the next segment

Returns session's last sequence number accepted

Returns inbound message queue (messages received with high sequence number)

Returns length of inbound message queue

Returns ID of last Test Request sent

Returns session's current status (offline, online, connecting, disconnecting). online means "logged on".

Handle incoming binary data

Respond to timeout (receiving or transmiting messages)

State initialization

Send application message

Session start: send Logon msg

Session stop

Utility function for tests: set out_queue to an arbitrary list of messages

Utility function for tests: simulates a certain point in time

Types

fix_field()

@type fix_field() :: {String.t(), any()}

session_in_queue()

@type session_in_queue() :: [ExFix.InMessage.t()]

session_name()

@type session_name() :: String.t()

session_result()

@type session_result() ::
  {:ok, [ExFix.Session.MessageToSend.t()], t()}
  | {:resend, [ExFix.Session.MessageToSend.t()], t()}
  | {:logout, [ExFix.Session.MessageToSend.t()], t()}
  | {:stop, t()}

session_status()

@type session_status() :: :offline | :connecting | :online | :disconnecting

t()

@type t() :: %ExFix.Session{
  config: term(),
  extra_bytes: term(),
  in_lastseq: term(),
  in_queue: term(),
  last_test_req_id_sent: term(),
  out_lastseq: term(),
  out_queue: term(),
  status: term()
}

Functions

get_extra_bytes(session)

@spec get_extra_bytes(t()) :: binary() | nil

Returns session's extra bytes to be processed with the next segment

get_in_lastseq(session)

@spec get_in_lastseq(t()) :: non_neg_integer()

Returns session's last sequence number accepted

get_in_queue(session)

@spec get_in_queue(t()) :: session_in_queue()

Returns inbound message queue (messages received with high sequence number)

get_in_queue_length(session)

@spec get_in_queue_length(t()) :: non_neg_integer()

Returns length of inbound message queue

get_last_test_req_id(session)

@spec get_last_test_req_id(t()) :: String.t() | nil

Returns ID of last Test Request sent

get_status(session)

@spec get_status(t()) :: session_status()

Returns session's current status (offline, online, connecting, disconnecting). online means "logged on".

handle_incoming_data(session, data)

@spec handle_incoming_data(t(), binary()) :: session_result()

Handle incoming binary data

handle_timeout(session, atom)

@spec handle_timeout(t(), term()) :: session_result()

Respond to timeout (receiving or transmiting messages)

init(config)

@spec init(ExFix.SessionConfig.t()) :: {:ok, t()}

State initialization

process_incoming_message(expected_seqnum, msg_type, session_name, session, msg)

Process incoming message

process_invalid_message(session, expected_seqnum, msg)

@spec process_invalid_message(t(), integer(), ExFix.InMessage.t()) :: session_result()

Process invalid message

process_valid_message(expected_seqnum, session_name, session, msg)

Process valid message

send_message(session, out_message)

@spec send_message(t(), ExFix.OutMessage.t()) :: session_result()

Send application message

session_start(session)

@spec session_start(t()) :: session_result()

Session start: send Logon msg

session_stop(session)

Session stop

set_out_queue(session, out_queue_messages)

Utility function for tests: set out_queue to an arbitrary list of messages

set_time(session, date_time)

Utility function for tests: simulates a certain point in time