The fix engine's download contains source code for a client project that will help you to quickly get up to speed on the engine's features.
The client project contains
Start two preconfigured engines to have them begin heart beating.
There is an Acceptor process and an Initiator process configured to startup and begin heart beating.
The startup will shift the processes to StandOff mode shortly after startup, and shift the processes
back to Active mode in another 10 seconds.
Generate the static classes for a version of the FIX Trading Community™'s Unified/FixRepository.xml.
ByteBufferAscii - wraps a ByteBuffer to provide readers and writers that work on a subset of the ByteBuffer's underlying byte array.
The class allows reading a value with zero copy from the raw byte message.
AsciiFormatter - formats and parses values in and out of Doubles, Longs and Integers.
FixTimeFormatter - formats and parses Unix time into and out of UTCTimeStamp, UTCTimeOnly, and UTCDate.
Demonstrates formatting with the seconds precision going beyond the 3 decimal places required by the FIX protocol.
The Static Class Repository - a test to demonstrate using the static classes generated for a FIX version in the Unified/FixRepository.xml.
Multiple fix message tests to introduce the FixMessage
Creating a FixMessage
Creating a FixMessage with Groups
Creating a FixMessage Template
A Template is a fix message written to a ByteBuffer and is ready to send, except there are dummy values.
At the time you are ready to send, overwrite the dummy values with actual values and send.
The AsciiFormatter's ability to pad a number and define a double's precision allows the template to work correctly.
FixMessage Parsing test
A timing control test - to introduce the statistics collected and the timing loop, this test measures a 10 millisecond call
to Thread's sleep method.
AsciiFormatter formatting - times the AsciiFormatter and Java's Double, Long and Integer.
AsciiFormatter parsing - times the AsciiFormatter and Java's Double, Long and Integer.
FixTimeFormatter formatting - times the FixTimeFormatter and Java's SimpleDateFormatter.
FixTimeFormatter parsing - times the FixTimeFormatter and Java's SimpleDateFormatter.
FixMessage parsing benchmarks
Parsing Level-1 (lookup) - times the lookup for a tag value pair when starting the search with zero search bytes up to a couple hundred search bytes.
Parsing Level-1 (raw Table) - times parsing each tag and value into a row of an integer array where each row contains the
start and stop index of each the tag and value. Multiple timing tests exist to show the cost of providing a ByteBufferAscii reader or not.
Parsing Level-2 (Fields) - times parsing the raw message into a FixMessage with Fields.
Parsing Level-3 (Groups) - times parsing the raw message into a FixMessage with Groups and Group Segments.
If you continue testing with your own test suite, consider a wide area test where one fix engine uses its Scheduler to send test messages to keep the connection hot.