This TestFixConnections.xml configuration file defines the FIX Connections and other related configurations in the examples. By placing the FIX Connection data into an XML file that will be included in the Engine's configuration file, you can easily create two Engine files that share this data, one as an Acceptor and one as an Initiator. By defining both, you can start each Engine and have them heart beat.

This file uses the command-line arguments and the macro feature to create the Connection start and stop times.

File Contents

This file's contents holds the following data which are used as a mocro value lookups in the top level Engine configuration file:


    <Test_8383_initiator_tags>
        <fixRepoSpec>
            ${FIXRepoSpec_FIX_2010_FIXT11FIX44}
        </fixRepoSpec>

        <stateLogger>
             <logInboundMsgs>true</logInboundMsgs>
             <writeToConsole>true</writeToConsole>
            <zero_logging>false</zero_logging>
        </stateLogger>
      <!--   MySLowBroker  MyBestBroker_BANZAI_EXEC   -->
        <logonConnectionSpec_valuesAsFromInitiator>
            <defaultAppVersionName>FIX44</defaultAppVersionName>
            <clients_connectionName>MyBestBroker_BANZAI_EXEC</clients_connectionName>
            <senderCompID>BANZAI</senderCompID>
            <senderSubID></senderSubID>
            <senderLocationID></senderLocationID>
            <targetCompID>EXEC</targetCompID>
            <targetSubID></targetSubID>
            <targetLocationID></targetLocationID>
            <onBehalfOfCompID></onBehalfOfCompID>
            <onBehalfOfSubID></onBehalfOfSubID>
            <onBehalfOfLocationID></onBehalfOfLocationID>

            <resetSeqNumFLag_141_OnLogon>false</resetSeqNumFLag_141_OnLogon>

            <login_heartBtInt_secs>${HeartBeatInterval}</login_heartBtInt_secs>
            <resendRequest_limitRange>1000</resendRequest_limitRange>
            <login_encryptMethod>0</login_encryptMethod>

            <fixSendingTime_numFractDigits>${FixSendingTime_numFractDigits}</fixSendingTime_numFractDigits>

            <isFieldEnumValueValidationOn>true</isFieldEnumValueValidationOn>
            <outMessage_checkMissingFields>true</outMessage_checkMissingFields>
            <checkForGarbledMessage>true</checkForGarbledMessage>

            <!-- cmdline_schedule_:= [ WEEKDAY, HOLIDAY ]-->
            <WEEKDAY_START>08:00 EST </WEEKDAY_START>
            <WEEKDAY_END>21:38 EST</WEEKDAY_END>
            <HOLIDAY_START>08:30 EST</HOLIDAY_START>
            <HOLIDAY_END>13:30 EST</HOLIDAY_END>

            <sessionSchedule>
                <!-- HH:mm Z -->
                <start_Day_time_hh_mm_z>${${cmdline_schedule}_START}</start_Day_time_hh_mm_z>
                <end_Day_time_hh_mm_z>${${cmdline_schedule}_END}</end_Day_time_hh_mm_z>
            </sessionSchedule>

        </logonConnectionSpec_valuesAsFromInitiator>

    </Test_8383_initiator_tags>

  

parametercurrent valuedescription
fixRepoSpec [macro expands to specific FIX Spec for the connection.] see the Include file FixRepositories.xml
stateLogger [macro to expands to a State Logger Spec.] see stateLogger Definition in the table below.
logonConnectionSpec_valuesAsFromInitiator [macro to expands to a Logon Connection Spec.] see logon Connection Spec in the table below.

stateLogger Definition

The state logger makes zero garbage, even when writing to console. The logger logs from the Session reader thread and the Client Handler thread. The write function from these threads writes to a ByteBuffer. The ByteBuffer is swapped out with an empty one and passed to a Session Scheduler job to write the buffer to disk, then made available to swap again.
parametercurrent valuedescription
logInboundMsgsc true When true, inbound messages are not logged.
writeToConsole true When true, writes all state logging to the console as well as the logfile.
zero_logging false All logging is off: no logging of inbound messages, events, and outbound messages.

logon Connection Spec

This header detail allows the engine to send and receive logon messages, heart beats, etc. If the header requires something other than the default values can provide, the Client's layer will need to extend the header logic in the client handler's base class. All properties are required by both the Initiator and the Acceptor.
parametercurrent valuedescription
defaultAppVersionName FIX44 The AppVersion as defined by field 1128 in the FixRepository.xml file for versions Fix.5.0 and later or would be define in the earlier versions if they had this tag. This tag is required even when using an earlier version, e.g., FIX.4.2 would usethe value FIX42 (the FIX Version with the dots removed).
clients_connectionName [unique name defined by you for this client's connection] It is illegal (startup failes) to use a non-unique name
senderCompID [login header value] value as if header is from the initiator
senderSubID [login header value] value as if header is from the initiator
senderLocationID [login header value] value as if header is from the initiator
targetCompID [login header value] value as if header is from the initiator
targetSubID [login header value] value as if header is from the initiator
targetLocationID [login header value] value as if header is from the initiator
onBehalfOfCompID [login header value] value as if header is from the initiator
onBehalfOfSubID [login header value] value as if header is from the initiator
onBehalfOfLocationID [login header value] value as if header is from the initiator
resetSeqNumFLag_141_OnLogon false For initiator, when logging in, if true, the sequence number is set to 1. The acceptor ignores this and uses the received logon message value.
login_heartBtInt_secs 30 For initiator, heart beat interval. The acceptor uses the logon message value.
resendRequest_limitRange 1000 The maximum number of message to send in a Resend Request or Gap Fill message. Afterthe limit is written, a Test message is sent to trigger another Resend Request or Gap Fill message.
login_encryptMethod 0 value as if header is from the initiator
fixSendingTime_numFractDigits 3 The number of fractional digits to send as for the fractional Seconds in Sending Time
isFieldEnumValueValidationOn true Validate the enum value for Enum Fields that are added to the FixMessage
outMessage_checkMissingFields true Checks for missing fields in the FixMessage
checkForGarbledMessage true Available to the Client's message handler to choose not to check for garbled messages. Logon messages are always checked. All other session messages are not parsed by FixMessage; the session handling logic uses Level-1 tag value lookups for speed.
sessionSchedule [login header value] see session schedule Definition defined below.

sessionSchedule Definition

The Session Schedule makes use of the command line argument cmdline_schedule. See the example file in TestFixConnections.xml The file uses the command line value to determine if the times are WEEKDAY or HOLIDAY.
parametercurrent valuedescription
start_Day_time_hh_mm_z 08:30 EST The start time of the connection in the form HH:mm Z At this time (and before the end_Day_time_hh_mm_z ), the Initiator will attempt to connect and the Acceptor will allow a connection attempt.
end_Day_time_hh_mm_z 16:30 EST The start time of the connection in the form HH:mm Z Beyound this time, the Initiator is in an OUTSIDE_HOURS state and will not be able and will not try to login. The acceptor treats logon attempts as illegal connections and silently disconnects. The concern with the acceptor is that the attempt could be from a client's test system. The scheduled hours of operation is the last line of defines against an off hours improper lineup.