1186 lines
35 KiB
Go
1186 lines
35 KiB
Go
/*
|
|
Package config declares settings for configuring QuickFIX/Go.
|
|
|
|
A quickfix acceptor or initiator can maintain multiple FIX
|
|
sessions. A FIX session is defined in QuickFIX as a unique
|
|
combination of a BeginString (the FIX version number), a
|
|
SenderCompID (your ID), and a TargetCompID (the
|
|
ID of your counterparty). A SessionQualifier can also be
|
|
used in rare cases to disambiguate otherwise identical sessions.
|
|
|
|
The quickfix.ParseSettings(reader io.Reader) func will pull settings
|
|
out of any stream, most commonly, a file stream.
|
|
If you decide to write your own components,
|
|
(storage for a particular database, a new kind of connector
|
|
etc...), you may also use the session settings to store settings
|
|
for your custom component.
|
|
|
|
A settings file is set up with two types of headings, a
|
|
[DEFAULT] heading and a [SESSION] heading.
|
|
|
|
[DEFAULT] is where you can define settings that all sessions use by default.
|
|
|
|
[SESSION] tells QuickFIX/Go that a new Session is being defined.
|
|
|
|
If you do not provide a setting that QuickFIX/Go needs, it will throw an error
|
|
telling you what setting is missing or improperly formatted.
|
|
|
|
# Sample Configuration Settings File:
|
|
|
|
# default settings for sessions
|
|
[DEFAULT]
|
|
ConnectionType=initiator
|
|
ReconnectInterval=60
|
|
SenderCompID=TW
|
|
|
|
# session definition
|
|
[SESSION]
|
|
# inherit ConnectionType, ReconnectInterval and SenderCompID from default
|
|
BeginString=FIX.4.1
|
|
TargetCompID=ARCA
|
|
StartTime=12:30:00
|
|
EndTime=23:30:00
|
|
HeartBtInt=20
|
|
SocketConnectPort=9823
|
|
SocketConnectHost=123.123.123.123
|
|
DataDictionary=somewhere/FIX41.xml
|
|
|
|
[SESSION]
|
|
BeginString=FIX.4.0
|
|
TargetCompID=ISLD
|
|
StartTime=12:00:00
|
|
EndTime=23:00:00
|
|
HeartBtInt=30
|
|
SocketConnectPort=8323
|
|
SocketConnectHost=23.23.23.23
|
|
DataDictionary=somewhere/FIX40.xml
|
|
|
|
[SESSION]
|
|
BeginString=FIX.4.2
|
|
TargetCompID=INCA
|
|
StartTime=12:30:00
|
|
EndTime=21:30:00
|
|
# overide default setting for RecconnectInterval
|
|
ReconnectInterval=30
|
|
HeartBtInt=30
|
|
SocketConnectPort=6523
|
|
SocketConnectHost=3.3.3.3
|
|
# (optional) alternate connection ports and hosts to cycle through on failover
|
|
SocketConnectPort1=8392
|
|
SocketConnectHost1=8.8.8.8
|
|
SocketConnectPort2=2932
|
|
SocketConnectHost2=12.12.12.12
|
|
DataDictionary=somewhere/FIX42.xml
|
|
*/
|
|
package config
|
|
|
|
const (
|
|
// Session settings.
|
|
|
|
// BeginString is the version of FIX this session should use.
|
|
//
|
|
// Required: Yes
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - FIXT.1.1
|
|
// - FIX.4.4
|
|
// - FIX.4.3
|
|
// - FIX.4.2
|
|
// - FIX.4.1
|
|
// - FIX.4.0
|
|
BeginString string = "BeginString"
|
|
|
|
// SenderCompID is your ID as associated with this FIX session.
|
|
//
|
|
// Required: Yes, unless configuring an acceptor with DynamicSessions=Y
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A case-sensitive alpha-numeric string.
|
|
SenderCompID string = "SenderCompID"
|
|
|
|
// SenderSubID is your subID as associated with this FIX session.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A case-sensitive alpha-numeric string.
|
|
SenderSubID string = "SenderSubID"
|
|
|
|
// SenderLocationID is your locationID as associated with this FIX session.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A case-sensitive alpha-numeric string.
|
|
SenderLocationID string = "SenderLocationID"
|
|
|
|
// TargetCompID is the counterparty's ID as associated with this FIX session.
|
|
//
|
|
// Required: Yes, unless configuring an acceptor with DynamicSessions=Y
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A case-sensitive alpha-numeric string.
|
|
TargetCompID string = "TargetCompID"
|
|
|
|
// TargetSubID is the counterparty's subID as associated with this FIX session.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A case-sensitive alpha-numeric string.
|
|
TargetSubID string = "TargetSubID"
|
|
|
|
// TargetLocationID is the counterparty's locationID as associated with this FIX session.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A case-sensitive alpha-numeric string.
|
|
TargetLocationID string = "TargetLocationID"
|
|
|
|
// SessionQualifier is an additional qualifier to disambiguate otherwise identical sessions.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A case-sensitive alpha-numeric string.
|
|
SessionQualifier string = "SessionQualifier"
|
|
|
|
// DefaultApplVerID specifies the default application version ID for the session.
|
|
// This can either be the ApplVerID enum (see the ApplVerID field) or the BeginString for the default version.
|
|
//
|
|
// Required: Only for FIXT 1.1 (and newer). Ignored for earlier transport versions.
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - FIX.5.0SP2
|
|
// - FIX.5.0SP1
|
|
// - FIX.5.0
|
|
// - FIX.4.4
|
|
// - FIX.4.3
|
|
// - FIX.4.2
|
|
// - FIX.4.1
|
|
// - FIX.4.0
|
|
// - 9
|
|
// - 8
|
|
// - 7
|
|
// - 6
|
|
// - 5
|
|
// - 4
|
|
// - 3
|
|
// - 2
|
|
DefaultApplVerID string = "DefaultApplVerID"
|
|
|
|
// StartTime is the time of day that this FIX session becomes activated.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A time in the format of HH:MM:SS, time is represented in time zone configured by TimeZone
|
|
StartTime string = "StartTime"
|
|
|
|
// EndTime is the time of day that this FIX session becomes deactivated.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A time in the format of HH:MM:SS, time is represented in time zone configured by TimeZone
|
|
EndTime string = "EndTime"
|
|
|
|
// StartDay is the starting day of week for the session,
|
|
// used to configure week-long sessions,
|
|
// and can be used in combination with StartTime.
|
|
// Incompatible with the Weekdays setting.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - Full day of week in English, or 3 letter abbreviation (i.e. Monday and Mon are valid)
|
|
StartDay string = "StartDay"
|
|
|
|
// EndDay is the ending day of week for the session,
|
|
// used to configure week-long sessions,
|
|
// and can be used in combination with EndTime.
|
|
// Incompatible with the Weekdays setting.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - Full day of week in English, or 3 letter abbreviation (i.e. Monday and Mon are valid)
|
|
EndDay string = "EndDay"
|
|
|
|
// Weekdays is for daily sessions that are only active on specific days of the week.
|
|
// Use in combination with StartTime and EndTime.
|
|
// Incompatible with StartDay and EndDay.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - Comma delimited list of days of the week in English, or 3 letter abbreviation (e.g. "Monday,Tuesday,Wednesday" or "Mon,Tue,Wed" would both be valid values).
|
|
Weekdays string = "Weekdays"
|
|
|
|
// TimeZone sets the time zone for this session; if specified, StartTime, EndTime, and ResetSeqTime will be converted from this zone to UTC.
|
|
// Times in messages will still be set to UTC as this is required by FIX specifications.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: UTC
|
|
//
|
|
// Valid Values:
|
|
// - IANA Time zone ID (America/New_York, Asia/Tokyo, Europe/London, etc.)
|
|
// - Local (The zone on host)
|
|
TimeZone string = "TimeZone"
|
|
|
|
// TimeStampPrecision determines precision for timestamps in (Orig)SendingTime fields in outbound messages.
|
|
// Only available for FIX.4.2 and greater, FIX versions earlier than FIX.4.2 will use timestamp resolution in seconds.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: MILLIS
|
|
//
|
|
// Valid Values:
|
|
// - SECONDS
|
|
// - MILLIS
|
|
// - MICROS
|
|
// - NANOS
|
|
TimeStampPrecision string = "TimeStampPrecision"
|
|
|
|
// ResetOnLogon determines if sequence numbers should be reset when receiving a logon request.
|
|
// Valid for FIX Acceptors only.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
ResetOnLogon string = "ResetOnLogon"
|
|
|
|
// RefreshOnLogon determines if session state should be restored from persistence layer when logging on.
|
|
// Useful for creating hot failover sessions.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
RefreshOnLogon string = "RefreshOnLogon"
|
|
|
|
// ResetOnLogout determines if sequence numbers should be reset to 1 after a normal logout termination.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
ResetOnLogout string = "ResetOnLogout"
|
|
|
|
// ResetOnDisconnect determines if sequence numbers should be reset to 1 after an abnormal termination.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
ResetOnDisconnect string = "ResetOnDisconnect"
|
|
|
|
// ResetSeqTime determines a time which a logon with a seqnum reset will be sent while keeping the session connected.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - 00:00:00
|
|
// - A time in the format of HH:MM:SS, time is represented in time zone configured by TimeZone
|
|
ResetSeqTime string = "ResetSeqTime"
|
|
)
|
|
|
|
const (
|
|
// Validation settings.
|
|
|
|
// DataDictionary is the path to an XML definition file for validating incoming FIX messages.
|
|
// If this is not set, only basic message validation will be done.
|
|
// If messages contain repeating groups, this is required to parse them correctly.
|
|
// This setting should only be used with FIX transport versions older than FIXT.1.1.
|
|
// See TransportDataDictionary and AppDataDictionary for FIXT.1.1 messages.
|
|
// Value must be a path to a valid XML data dictionary file.
|
|
//
|
|
// QuickFIX/Go repo contains the following standard dictionaries in the spec/ directory:
|
|
// - FIX44.xml
|
|
// - FIX43.xml
|
|
// - FIX42.xml
|
|
// - FIX41.xml
|
|
// - FIX40.xml
|
|
//
|
|
// Required: No, but strongly recommended
|
|
//
|
|
// Default: No dictionary, and QuickFIX/Go does not attempt to load any standard dictionaries
|
|
//
|
|
// Valid Values:
|
|
// - A filepath to a XML file with read access.
|
|
DataDictionary string = "DataDictionary"
|
|
|
|
// TransportDataDictionary is the path to an XML definition file for validating admin (transport) messages.
|
|
// This setting is only valid for FIXT.1.1 (or newer) sessions.
|
|
// See DataDictionary for older transport versions (FIX.4.0 - FIX.4.4) for additional information.
|
|
// Value must be a path to a valid XML data dictionary file.
|
|
//
|
|
// QuickFIX/Go repo contains the following standard dictionary in the spec/ directory
|
|
// - FIXT1.1.xml
|
|
//
|
|
// Required: No, but strongly recommended. Required if also using AppDataDictionary
|
|
//
|
|
// Default: No dictionary, and QuickFIX/Go does not attempt to load any standard dictionaries
|
|
//
|
|
// Valid Values:
|
|
// - A filepath to a XML file with read access.
|
|
TransportDataDictionary string = "TransportDataDictionary"
|
|
|
|
// AppDataDictionary is the path to an XML definition file for validating application messages.
|
|
// This setting is only valid for FIXT.1.1 (or newer) sessions.
|
|
// See DataDictionary for older transport versions (FIX.4.0 - FIX.4.4) for additional information.
|
|
// Value must be a path to a valid XML data dictionary file.
|
|
//
|
|
// This setting supports the possibility of a custom application data dictionary for each session.
|
|
// This setting can be used as a prefix to specify multiple application dictionaries for the FIXT transport.
|
|
//
|
|
// For example:
|
|
// DefaultApplVerID=FIX.4.2
|
|
// # For default application version ID
|
|
// AppDataDictionary=FIX42.xml
|
|
// # For nondefault application version ID
|
|
// # Use BeginString suffix for app version
|
|
// AppDataDictionary.FIX.4.4=FIX44.xml
|
|
//
|
|
// QuickFIX/Go repo contains the following standard dictionaries in the spec/ directory
|
|
// - FIX50SP2.xml
|
|
// - FIX50SP1.xml
|
|
// - FIX50.xml
|
|
// - FIX44.xml
|
|
// - FIX43.xml
|
|
// - FIX42.xml
|
|
// - FIX41.xml
|
|
// - FIX40.xml
|
|
//
|
|
// Required: No, but strongly recommended. Required if also using TransportDataDictionary
|
|
//
|
|
// Default: No dictionary, and QuickFIX/Go does not attempt to load any standard dictionaries
|
|
//
|
|
// Valid Values:
|
|
// - A filepath to a XML file with read access.
|
|
AppDataDictionary string = "AppDataDictionary"
|
|
|
|
// RejectInvalidMessage is set by detault to Y, meaning that on reception of a message
|
|
// that fails data dictionary validation, a reject will be issued to the counter-party in responnse.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: Y
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
RejectInvalidMessage string = "RejectInvalidMessage"
|
|
|
|
// AllowUnknownMessageFields is set by default to N, meaning that non user-defined fields (field with tag < 5000)
|
|
// will be rejected if they are not defined in the data dictionary,
|
|
// or are present in messages they do not belong to.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
AllowUnknownMessageFields string = "AllowUnknownMsgFields"
|
|
|
|
// CheckUserDefinedFields if set to N, user-defined fields (field with tag >= 5000) will not be rejected
|
|
// if they are not defined in the data dictionary, or are present in messages they do not belong to.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: Y
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
CheckUserDefinedFields string = "ValidateUserDefinedFields"
|
|
|
|
// ValidateFieldsOutOfOrder if set to N, fields that are out of order (i.e. body fields in the header, or header fields in the body)
|
|
// will not be rejected. Useful for connecting to systems which do not properly order fields.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: Y
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
ValidateFieldsOutOfOrder string = "ValidateFieldsOutOfOrder"
|
|
|
|
// ValidateFieldsHaveValues if set to N, fields without values (i.e. |11=| for an empty ClOrdID)
|
|
// will not be rejected, even if RejectInvalidMessage is set to N.
|
|
// Useful for connecting to systems that improperly send empty tags.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: Y
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
ValidateFieldsHaveValues string = "ValidateFieldsHaveValues"
|
|
|
|
// CheckLatency if set to Y, messages must be received from the counter-party within a defined number of seconds.
|
|
// It is useful to turn this off if a system uses localtime for it's timestamps instead of GMT.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: Y
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
CheckLatency string = "CheckLatency"
|
|
|
|
// MaxLatency if CheckLatency is set to Y, this defines the number of seconds latency allowed for a message to be processed.
|
|
// Value must be positive integer.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: 120
|
|
//
|
|
// Valid Values:
|
|
// - Any positive integer
|
|
MaxLatency string = "MaxLatency"
|
|
|
|
// InChanCapacity sets the maximum number of messages that can be buffered in the channel for incoming FIX messages.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: 1
|
|
//
|
|
// Valid Values:
|
|
// - A positive integer, or zero for an unbuffered channel
|
|
InChanCapacity string = "InChanCapacity"
|
|
)
|
|
|
|
const (
|
|
// Initiator-only settings.
|
|
|
|
// ReconnectInterval defines the time between reconnection attempts in seconds.
|
|
// Only used for initiators.
|
|
// Value must be positive integer.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: 30
|
|
//
|
|
// Valid Values:
|
|
// - Any positive integer
|
|
ReconnectInterval string = "ReconnectInterval"
|
|
|
|
// LogoutTimeout defines the number of seconds to wait for a logout response before disconnecting.
|
|
// Only used for initiators.
|
|
// Value must be positive integer.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: 2
|
|
//
|
|
// Valid Values:
|
|
// - Any positive integer
|
|
LogoutTimeout string = "LogoutTimeout"
|
|
|
|
// LogonTimeout defines the number of seconds to wait for a logon response before disconnecting.
|
|
// Only used for initiators.
|
|
// Value must be positive integer.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: 10
|
|
//
|
|
// Valid Values:
|
|
// - Any positive integer
|
|
LogonTimeout string = "LogonTimeout"
|
|
|
|
// HeartBtInt sets the FIX session heartbeat interval in seconds.
|
|
// Only used for initiators (unless acceptor sets HeartBtIntOverride to Y).
|
|
// Value must be positive integer.
|
|
//
|
|
// Required: Yes for initiators or acceptors with HeartBtIntOverride
|
|
//
|
|
// Default: None
|
|
//
|
|
// Valid Values:
|
|
// - Any positive integer
|
|
HeartBtInt string = "HeartBtInt"
|
|
|
|
// SocketConnectHost sets the host to attempt to connect to.
|
|
// In config files you can also set SocketConnectHost<n> where n is a positive integer.
|
|
// This allows for alternate socket hosts for connecting to a session for failover.
|
|
// (i.e.) SocketConnectHost1, SocketConnectHost2... must be consecutive and have a matching SocketConnectPort<n>.
|
|
//
|
|
// Required: Yes for initiators
|
|
//
|
|
// Default: None
|
|
//
|
|
// Valid Values:
|
|
// - A valid IPv4 or IPv6 address or a domain name
|
|
SocketConnectHost string = "SocketConnectHost"
|
|
|
|
// SocketConnectPort sets the socket port for connecting to a session.
|
|
// In config files you can also set SocketConnectPort<n> where n is a positive integer.
|
|
// This allows for alternate socket ports for connecting to a session for failover.
|
|
// (i.e.) SocketConnectPort1, SocketConnectPort2... must be consecutive and have a matching SocketConnectHost<n>.
|
|
//
|
|
// Required: Yes for initiators
|
|
//
|
|
// Default: None
|
|
//
|
|
// Valid Values:
|
|
// - A positive integer
|
|
SocketConnectPort string = "SocketConnectPort"
|
|
|
|
// SocketTimeout sets the duration of timeout for TLS handshake.
|
|
// Only used for initiators.
|
|
//
|
|
// Example Values:
|
|
// - SocketTimeout=30s # 30 seconds
|
|
// - SocketTimeout=60m # 60 minutes
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: 0 (no timeout)
|
|
//
|
|
// Valid Values:
|
|
// - A valid go time.Duration
|
|
SocketTimeout string = "SocketTimeout"
|
|
|
|
// ProxyType sets the type of proxy server to connect to.
|
|
// Only used for initiators.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - socks
|
|
ProxyType string = "ProxyType"
|
|
|
|
// ProxyHost provides the address of the proxy server to connect to.
|
|
// Only used for initiators.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A valid IPv4 or IPv6 address or a domain name
|
|
ProxyHost string = "ProxyHost"
|
|
|
|
// ProxyPort provides the port of the proxy server to connect to.
|
|
// Only used for initiators.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - Any positive integer
|
|
ProxyPort string = "ProxyPort"
|
|
|
|
// ProxyUser sets the username for the proxy server connection.
|
|
// Only used for initiators.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - Any string
|
|
ProxyUser string = "ProxyUser"
|
|
|
|
// ProxyPassword sets the password for the proxy server connection.
|
|
// Only used for initiators.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - Any string
|
|
ProxyPassword string = "ProxyPassword"
|
|
)
|
|
|
|
const (
|
|
// Acceptor-only settings.
|
|
|
|
// SocketAcceptHost sets the address for listening on incoming connections.
|
|
// Used for acceptors only.
|
|
//
|
|
// Common examples:
|
|
// - 127.0.0.1 (for testing on localhost)
|
|
// - 0.0.0.0 (explicitly specify every available interface)
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: Listens on all available network interfaces.
|
|
//
|
|
// Valid Values:
|
|
// - A valid IPv4 or IPv6 address or a domain name
|
|
SocketAcceptHost string = "SocketAcceptHost"
|
|
|
|
// SocketAcceptPort sets the socket port for listening to incoming connections.
|
|
// Used for acceptors only.
|
|
//
|
|
// Required: Yes for acceptors
|
|
//
|
|
// Default: None
|
|
//
|
|
// Valid Values:
|
|
// - A positive integer, representing a valid open socket port
|
|
SocketAcceptPort string = "SocketAcceptPort"
|
|
|
|
// HeartBtIntOverride if set to Y, will use the HeartBtInt value in the acceptor's config file for the heartbeat interval rather than what the initiator dictates.
|
|
// Used for acceptors only.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
HeartBtIntOverride string = "HeartBtIntOverride"
|
|
|
|
// UseTCPProxy if set to Y, use TCP proxy for servers listening behind HAProxy of Amazon ELB load balancers.
|
|
// The server can then receive the address of the client instead of the load balancer's.
|
|
// Used for acceptors only.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
UseTCPProxy string = "UseTCPProxy"
|
|
|
|
// DynamicSessions if set to Y, allows sessions to connect to this acceptor
|
|
// without explicitly stating SenderCompID/TargetCompID in the config file for the acceptor.
|
|
// Used for acceptors only.
|
|
//
|
|
// Use DynamicQualifier=Y if initiator client sessions are using the same SenderCompID.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
DynamicSessions string = "DynamicSessions"
|
|
|
|
// DynamicQualifier is used in conjunction with DynamicSessions.
|
|
// If set to Y, allows sessions to connect to this acceptor
|
|
// when initiator client sessions are using the same SenderCompID.
|
|
// Used for acceptors only.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
DynamicQualifier string = "DynamicQualifier"
|
|
)
|
|
|
|
const (
|
|
// Security settings.
|
|
|
|
// SocketPrivateKeyFile is the filepath for the private key to use for secure TLS connections.
|
|
// Must be used with SocketCertificateFile.
|
|
// Must contain PEM encoded data.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A filepath to a file with read access.
|
|
SocketPrivateKeyFile string = "SocketPrivateKeyFile"
|
|
|
|
// SocketCertificateFile is the filepath for the certificate to use for secure TLS connections.
|
|
// Must be used with SocketPrivateKeyFile.
|
|
// Must contain PEM encoded data.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A filepath to a file with read access.
|
|
SocketCertificateFile string = "SocketCertificateFile"
|
|
|
|
// SocketCAFile is an optional filepath for a root CA to use for secure TLS connections.
|
|
// For acceptors, client certificates will be verified against this CA.
|
|
// For initiators, clients will use the CA to verify the server certificate.
|
|
// If not configurated, initiators will verify the server certificate using the host's root CA set.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A filepath to a file with read access.
|
|
SocketCAFile string = "SocketCAFile"
|
|
|
|
// SocketPrivateKeyBytes is an optional value containing raw bytes of a PEM
|
|
// encoded private key to use for secure TLS communications.
|
|
// Must be used with SocketCertificateBytes.
|
|
// Must contain PEM encoded data.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - Raw bytes containing a valid PEM encoded private key.
|
|
SocketPrivateKeyBytes string = "SocketPrivateKeyBytes"
|
|
|
|
// SocketCertificateBytes is an optional value containing raw bytes of a PEM
|
|
// encoded certificate to use for secure TLS communications.
|
|
// Must be used with SocketPrivateKeyBytes.
|
|
// Must contain PEM encoded data.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - Raw bytes containing a valid PEM encoded certificate.
|
|
SocketCertificateBytes string = "SocketCertificateBytes"
|
|
|
|
// SocketCABytes is an optional value containing raw bytes of a PEM encoded
|
|
// root CA to use for secure TLS communications. For acceptors, client
|
|
// certificates will be verified against this CA. For initiators, clients
|
|
// will use the CA to verify the server certificate. If not configured,
|
|
// initiators will verify the server certificates using the host's root CA
|
|
// set.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - Raw bytes containing a valid PEM encoded CA.
|
|
SocketCABytes string = "SocketCABytes"
|
|
|
|
// SocketInsecureSkipVerify controls whether a client verifies the server's certificate chain and host name.
|
|
// If SocketInsecureSkipVerify is set to Y, crypto/tls accepts any certificate presented by the server and any host name in that certificate.
|
|
// In this mode, TLS is susceptible to machine-in-the-middle attacks unless custom verification is used.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
SocketInsecureSkipVerify string = "SocketInsecureSkipVerify"
|
|
|
|
// SocketServerName sets the expected server name on a returned certificate, unless SocketInsecureSkipVerify is true.
|
|
// This is for the TLS Server Name Indication extension.
|
|
// Only used for initiators.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - Any string
|
|
SocketServerName string = "SocketServerName"
|
|
|
|
// SocketMinimumTLSVersion specifies the minimum TLS version to use when creating a secure connection.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: TLS12.
|
|
//
|
|
// Valid Values:
|
|
// - SSL30
|
|
// - TLS10
|
|
// - TLS11
|
|
// - TLS12
|
|
SocketMinimumTLSVersion string = "SocketMinimumTLSVersion"
|
|
|
|
// SocketUseSSL if set to Y, an initiator will use TLS even if client certificates are not present.
|
|
// It is set to N by default, meaning TLS will not be used if SocketPrivateKeyFile or SocketCertificateFile are not supplied.
|
|
//
|
|
// This is used for initiators in the case where you do not need to provide client certificates, but still need to use
|
|
// a TLS connection and should verify the server certificate(s).
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
SocketUseSSL string = "SocketUseSSL"
|
|
)
|
|
|
|
const (
|
|
// Logging settings.
|
|
|
|
// FileLogPath sets the directory path in which to write log files to.
|
|
// This will create the directory path if it does not already exist.
|
|
// FileLogPath is only relevant if also using quickfix.NewFileLogFactory(..) in code
|
|
// when creating your LogFactory for your initiator or acceptor.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A valid path
|
|
FileLogPath string = "FileLogPath"
|
|
|
|
// SQLLogDriver sets the name of the database driver to use for application logs (see https://go.dev/wiki/SQLDrivers for the list of available drivers).
|
|
// SQLLogDriver is only relevant if also using sql.NewLogFactory(..) in code
|
|
// when creating your LogFactory for your initiator or acceptor.
|
|
//
|
|
// Required: Only if using a sql db as your Log
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - See https://go.dev/wiki/SQLDrivers
|
|
SQLLogDriver string = "SQLLogDriver"
|
|
|
|
// SQLLogDataSourceName sets the driver-specific data source name of the database to use for application logs.
|
|
// This usually consists of at least a database name and connection information.
|
|
// SQLLogDataSourceName is only relevant if also using sql.NewLogFactory(..) in code
|
|
// when creating your LogFactory for your initiator or acceptor.
|
|
//
|
|
// See https://pkg.go.dev/database/sql#Open for more information.
|
|
//
|
|
// Required: Only if using a sql db as your Log.
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A string correspondinng to a datasource
|
|
SQLLogDataSourceName string = "SQLLogDataSourceName"
|
|
|
|
// SQLLogConnMaxLifetime sets the maximum duration of time that a database connection may be reused.
|
|
// See https://pkg.go.dev/database/sql#DB.SetConnMaxLifetime for more information.
|
|
//
|
|
// If your database server has a config option to close inactive connections after some duration (e.g. MySQL "wait_timeout"),
|
|
// set SQLLogConnMaxLifetime to a value less than that duration.
|
|
//
|
|
// Example Values:
|
|
// - SQLLogConnMaxLifetime=14400s # 14400 seconds
|
|
// - SQLLogConnMaxLifetime=2h45m # 2 hours and 45 minutes
|
|
//
|
|
// SQLLogConnMaxLifetime is only relevant if also using sql.NewLogFactory(..) in code
|
|
// when creating your LogFactory for your initiator or acceptor.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: 0 (forever)
|
|
//
|
|
// Valid Values:
|
|
// - A valid go time.Duration
|
|
SQLLogConnMaxLifetime string = "SQLLogConnMaxLifetime"
|
|
|
|
// MongoLogConnection sets the MongoDB connection URL to use for application logs.
|
|
//
|
|
// See https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo#Connect for more information.
|
|
//
|
|
// MongoLogConnection is only relevant if also using mongo.NewLogFactory(..) in code
|
|
// when creating your LogFactory for your initiator or acceptor.
|
|
//
|
|
// Required: Only if using MongoDB as your Log.
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A string representing a MongoDB connection
|
|
MongoLogConnection string = "MongoLogConnection"
|
|
|
|
// MongoLogDatabase sets the MongoDB-specific name of the database to use for application logs.
|
|
//
|
|
// See https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo#Connect for more information.
|
|
//
|
|
// MongoLogDatabase is only relevant if also using mongo.NewLogFactory(..) in code
|
|
// when creating your LogFactory for your initiator or acceptor.
|
|
//
|
|
// Required: Only if using MongoDB as your Log.
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A string corresponding to a MongoDB database
|
|
MongoLogDatabase string = "MongoLogDatabase"
|
|
|
|
// MongoLogReplicaSet sets the MongoDB replica set to use for application logs.
|
|
// This is optional.
|
|
//
|
|
// See https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo#Connect for more information.
|
|
//
|
|
// MongoLogReplicaSet is only relevant if also using mongo.NewLogFactory(..) in code
|
|
// when creating your LogFactory for your initiator or acceptor.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A string corresponding to a MongoDB replica set
|
|
MongoLogReplicaSet string = "MongoLogReplicaSet"
|
|
)
|
|
|
|
const (
|
|
// Storage settings.
|
|
|
|
// PersistMessages if set to N, no messages will be persisted.
|
|
// This will force QuickFIX/Go to always send GapFills instead of resending messages.
|
|
// Use this if you know you never want to resend a message.
|
|
// This is useful for market data streams when logging all incoming messages is not important.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: Y
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
PersistMessages string = "PersistMessages"
|
|
|
|
// FileStorePath sets the directory path in which to write sequence number and message files.
|
|
// This will create the directory path if it does not already exist.
|
|
// FileStorePath is only relevant if also using file.NewStoreFactory(..) in code
|
|
// when creating your MessageStoreFactory for your initiator or acceptor.
|
|
//
|
|
// Required: Only if using files as your MessageStore
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A valid path
|
|
FileStorePath string = "FileStorePath"
|
|
|
|
// FileStoreSync controls whether the FileStore syncs to the hard drive on every write.
|
|
// It's safer to sync, but it's also much slower.
|
|
// FileStoreSync is only relevant if also using file.NewStoreFactory(..) in code
|
|
// when creating your MessageStoreFactory for your initiator or acceptor.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: Y
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
FileStoreSync string = "FileStoreSync"
|
|
|
|
// SQLStoreDriver sets the name of the database driver to use for message storage (see https://go.dev/wiki/SQLDrivers for the list of available drivers).
|
|
// SQLStoreDriver is only relevant if also using sql.NewStoreFactory(..) in code
|
|
// when creating your MessageStoreFactory for your initiator or acceptor.
|
|
//
|
|
// Required: Only if using a sql db as your MessageStore
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - See https://go.dev/wiki/SQLDrivers
|
|
SQLStoreDriver string = "SQLStoreDriver"
|
|
|
|
// SQLStoreDataSourceName sets the driver-specific data source name of the database to use for messagge storage.
|
|
// This usually consists of at least a database name and connection information.
|
|
// SQLStoreDataSourceName is only relevant if also using sql.NewStoreFactory(..) in code
|
|
// when creating your MessageStoreFactory for your initiator or acceptor.
|
|
//
|
|
// See https://pkg.go.dev/database/sql#Open for more information.
|
|
//
|
|
// Required: Only if using a sql db as your MessageStore
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A string correspondinng to a datasource
|
|
SQLStoreDataSourceName string = "SQLStoreDataSourceName"
|
|
|
|
// SQLStoreConnMaxLifetime sets the maximum duration of time that a database connection may be reused.
|
|
// See https://pkg.go.dev/database/sql#DB.SetConnMaxLifetime for more information.
|
|
//
|
|
// If your database server has a config option to close inactive connections after some duration (e.g. MySQL "wait_timeout"),
|
|
// set SQLStoreConnMaxLifetime to a value less than that duration.
|
|
//
|
|
// Example Values:
|
|
// - SQLStoreConnMaxLifetime=14400s # 14400 seconds
|
|
// - SQLStoreConnMaxLifetime=2h45m # 2 hours and 45 minutes
|
|
//
|
|
// SQLStoreConnMaxLifetime is only relevant if also using sql.NewStoreFactory(..) in code
|
|
// when creating your MessageStoreFactory for your initiator or acceptor.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: 0 (forever)
|
|
//
|
|
// Valid Values:
|
|
// - A valid go time.Duration
|
|
SQLStoreConnMaxLifetime string = "SQLStoreConnMaxLifetime"
|
|
|
|
// SQLStoreMessagesTableName defines the table name for the messages table. Default is "messages".
|
|
// If you use a different table name, you must set up your database accordingly.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: messages
|
|
//
|
|
// Valid Values:
|
|
// - A valid string
|
|
SQLStoreMessagesTableName = "SQLStoreMessagesTableName"
|
|
|
|
// SQLStoreSessionsTableName defines the table name for the messages table. Default is "sessions".
|
|
// If you use a different table name, you must set up your database accordingly.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: sessions
|
|
//
|
|
// Valid Values:
|
|
// - A valid string
|
|
SQLStoreSessionsTableName = "SQLStoreSessionsTableName"
|
|
|
|
// MongoStoreConnection sets the MongoDB connection URL to use for message storage.
|
|
//
|
|
// See https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo#Connect for more information.
|
|
//
|
|
// MongoStoreConnection is only relevant if also using mongo.NewStoreFactory(..) in code
|
|
// when creating your MessageStoreFactory for your initiator or acceptor.
|
|
//
|
|
// Required: Only if using MongoDB as your MessageStore
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A string representing a MongoDB connection
|
|
MongoStoreConnection string = "MongoStoreConnection"
|
|
|
|
// MongoStoreDatabase sets the MongoDB-specific name of the database to use for message storage.
|
|
//
|
|
// See https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo#Connect for more information.
|
|
//
|
|
// MongoStoreDatabase is only relevant if also using mongo.NewStoreFactory(..) in code
|
|
// when creating your MessageStoreFactory for your initiator or acceptor.
|
|
//
|
|
// Required: Only if using MongoDB as your MessageStore
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A string corresponding to a MongoDB database
|
|
MongoStoreDatabase string = "MongoStoreDatabase"
|
|
|
|
// MongoStoreReplicaSet sets the MongoDB replica set to use for message storage.
|
|
// This is optional.
|
|
//
|
|
// See https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo#Connect for more information.
|
|
//
|
|
// MongoStoreReplicaSet is only relevant if also using mongo.NewStoreFactory(..) in code
|
|
// when creating your MessageStoreFactory for your initiator or acceptor.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N/A
|
|
//
|
|
// Valid Values:
|
|
// - A string corresponding to a MongoDB replica set
|
|
MongoStoreReplicaSet string = "MongoStoreReplicaSet"
|
|
)
|
|
|
|
const (
|
|
// Misc settings.
|
|
|
|
// ResendRequestChunkSize is a setting to limit the size of a resend request in case of missing messages.
|
|
// This is useful when the remote FIX engine does not allow to ask for more than <n> messages for a ResendRequest.
|
|
//
|
|
// I.e. if the ResendRequestChunkSize is set to 5 and a gap of 7 messages is detected, a first resend request will be sent for 5 messages.
|
|
// When this gap has been filled, another resend request for 2 messages will be sent.
|
|
// If the ResendRequestChunkSize is set to 0, only one ResendRequest for all the missing messages will be sent.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: 0 (do not chunk resends)
|
|
//
|
|
// Valid Values:
|
|
// - A positive integer
|
|
ResendRequestChunkSize string = "ResendRequestChunkSize"
|
|
|
|
// EnableLastMsgSeqNumProcessed tells the FIX engine to add the last message sequence number processed
|
|
// to outgoing message headers (using optional tag 369).
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
EnableLastMsgSeqNumProcessed string = "EnableLastMsgSeqNumProcessed"
|
|
|
|
// EnableNextExpectedMsgSeqNum tells the FIX engine to add tag NextExpectedMsgSeqNum (optional tag 789) on the
|
|
// sent Logon message and use value of tag 789 on received Logon message to synchronize session.
|
|
// This should not be enabled for FIX versions less than FIX.4.4.
|
|
//
|
|
// Required: No
|
|
//
|
|
// Default: N
|
|
//
|
|
// Valid Values:
|
|
// - Y
|
|
// - N
|
|
EnableNextExpectedMsgSeqNum string = "EnableNextExpectedMsgSeqNum"
|
|
)
|