Packages

FIX (Foreign Information Exchange) protocol implementation for Erlang.

Current section

Files

Jump to
erlyfix src erlyfix.hrl
Raw

src/erlyfix.hrl

-record(protocol_version, {
major :: integer(),
minor :: integer(),
servicepack :: integer()
}).
-type protocol_version() :: #protocol_version{}.
%% Definitions
-record(value_def, {
key :: atom(),
description :: binary()
}).
-type value_def() :: #value_def{}.
-record(field_def, {
name :: atom(),
number :: non_neg_integer(),
type :: atom(),
values :: [value_def()]
}).
-type field_def() :: #field_def{}.
-record(component_def, {
name :: atom(),
composites :: [composite_ref()]
}).
-type component_def() :: #component_def{}.
-record(group_def, {
name :: atom(),
composites :: [composite_ref()],
required :: true|false
}).
-type group_def() :: #group_def{}.
%% References
-record(field_ref, {
name :: atom(),
required :: true|false
}).
-type field_ref() :: #field_ref{}.
-record(component_ref, {
name :: atom(),
required :: true|false
}).
-type component_ref() :: #component_ref{}.
-type composite_ref() :: field_ref() | group_def() | component_ref().
-record(message_ref, {
name :: atom(),
type :: atom(),
category :: atom(),
composites :: [composite_ref()]
}).
%% Objects
-record(field, {
id :: non_neg_integer(),
name :: atom(),
number :: non_neg_integer(),
type :: atom(),
value4key :: map(),
value4description :: map(),
composite4field :: map()
}).
-type field() :: #field{}.
-record(component, {
id :: non_neg_integer(),
name :: atom(),
composite4name :: map(),
mandatoryComposites :: map(),
composite4field :: map()
}).
-type component() :: #component{}.
-record(group, {
id :: non_neg_integer(),
name :: atom(),
composite4name :: map(),
mandatoryComposites :: map(),
composite4field :: map()
}).
-type group() :: #group{}.
-record(header, {
composite4name :: map(),
mandatoryComposites :: map(),
composite4field :: map()
}).
-type header() :: #header{}.
-record(trailer, {
composite4name :: map(),
mandatoryComposites :: map(),
composite4field :: map()
}).
-type trailer() :: #trailer{}.
-record(message, {
name :: atom(),
type :: atom(),
category :: atom(),
composite4name :: map(),
mandatoryComposites :: map(),
composite4field :: map()
}).
-type message() :: #message{}.
-record(field_REs, {
data_separator :: re:mp(),
tag_separator :: re:mp(),
digits :: re:mp(),
int :: re:mp(),
float :: re:mp(),
country :: re:mp(),
boolean :: re:mp(),
utctimeonly :: re:mp(),
monthyear :: re:mp(),
localmktdate :: re:mp(),
utctimestamp :: re:mp()
}).
-type field_REs() :: #field_REs{}.
-record(parser_helpers, {
checksum_digits :: re:mp(),
checksum_size :: non_neg_integer(),
begin_string :: binary(),
field_REs :: field_REs()
}).
-type parser_helpers() :: #parser_helpers{}.
-record(uncompiled_protocol, {
protocol_version :: protocol_version(),
header :: header(),
trailer :: trailer(),
field4number :: map(),
field4name :: map(),
component4name :: map(),
message4name :: map(),
message4type :: map(),
container :: array:array()
}).
-type uncompiled_protocol() :: #uncompiled_protocol{}.
-record(protocol, {
protocol_version :: protocol_version(),
header :: header(),
trailer :: trailer(),
field4number :: map(),
field4name :: map(),
component4name :: map(),
message4name :: map(),
message4type :: map(),
container :: array:array(),
parser_helpers :: parser_helpers()
}).
-type protocol() :: #protocol{}.
% field types
-record(monthyear_week, {
year :: non_neg_integer(),
month :: non_neg_integer(),
week :: non_neg_integer()
}).
-record(monthyear_day, {
year :: non_neg_integer(),
month :: non_neg_integer(),
day :: non_neg_integer()
}).
-type monthyear() :: #monthyear_week{} | #monthyear_day{}.
-record(utc_time, {
hour :: non_neg_integer(),
minute :: non_neg_integer(),
second :: non_neg_integer(),
ms :: non_neg_integer()
}).
-type utc_time() :: #utc_time{}.
-record(fix_date, {
year :: non_neg_integer(),
month :: non_neg_integer(),
day :: non_neg_integer()
}).
-type fix_date() :: #fix_date{}.
-record(utc_timestamp, {
date :: fix_date(),
time :: utc_time()
}).
-type utc_timestamp() :: #utc_timestamp{}.