Supported operating systems:
- Microsoft Windows 2003 Server, Enterprise Edition SP2, Standart Edition SP2
- Microsoft Windows XP Professional
- Microsoft Windows 2000 Professional, SP2+
- Microsoft Windows NT 4.0, Service Pack 6 or higher
- Sun Solaris 8.0, SPARC Platform Edition
- Sun Solaris 8.0, Intel Platform Edition
- Linux, Kernel 2.4.x, Intel Platform Edition
Supported compilers:
- Win32
- Microsoft Visual C++ 6.0, SP5+
- Microsoft Visual Studio .Net 7.0, SP2+
- Microsoft Visual Studio .Net 7.1
- Microsoft Visual Studio .Net 8.0
- Win64
- Microsoft Visual Studio .Net 8.0
- Linux x32/x64
- Solaris
- Sun WorkShop 6 update 2 C++ 5.3
In the Project Settings dialog (select Project ->Settings), add "V12.lib", "Ws2_32.lib" libraries to the Object/Library Modules entry in the Link tab and switch on the support for Run-Time Type Information (in the C/C++ tab, select C++ Language from the Category list and click to check the Enable Run-Time Type Information (RTTI)" option). In the C/C++/Code Generation/Use run-time library section select 'Debug Multithreaded DLL' for the debug version and 'Multithreaded DLL' for the release one.
V12.DLL file must be located in one of the following directories:
- The directory containing the executable module for the current process
- The Current directory
- The Windows system directory
- The Windows directory
- The directory listed in the PATH environment variable.
To add the library:
- Click "Project" -> "Properties"
- Go to the Linker sub-directory
- Under the Input selection, add the following library file to the Additional Dependencies field: V12_7.lib
V12_7.DLL file must be located in one of the following directories:
- The directory containing the executable module for the current process
- The current directory
- The Windows system directory
- The Windows directory
- The directory listed in the PATH environment variable.
To add the library:
- Click "Project" -> "Properties"
- Go to the Linker sub-directory
- Under the Input selection, add the following library file to the Additional Dependencies field: V12_71.lib
V12_71.DLL file must be located in one of the following directories:
- The directory containing the executable module for the current process
- The current directory
- The Windows system directory
- The Windows directory
- The directory listed in the PATH environment variable.
To add the library:
- Click "Project" -> "Properties"
- Go to the Linker sub-directory
- Under the Input selection, add the following library file to the Additional Dependencies field: V12_8.lib
V12_8.DLL file must be located in one of the following directories:
- The directory containing the executable module for the current process
- The current directory
- The Windows system directory
- The Windows directory
- The directory listed in the PATH environment variable.
- V12.DLL is intended for Microsoft C++ 6.0
- V12_7.DLL is intended for Microsoft Visual .Net 7.0
- V12_71.DLL is intended for Microsoft Visual .Net 7.1
- V12_8.DLL is intended for Microsoft Visual .Net 8
To add the library:
- Click "Project" -> "Properties"
- Go to the Linker sub-directory
- Under the Input selection, add the following library file to the Additional Dependencies field: V12_8.lib
V12_8.DLL file must be located in one of the following directories:
- The directory containing the executable module for the current process
- The current directory
- The Windows system directory
- The Windows directory
- The directory listed in the PATH environment variable.
When compiling, it is necessary to indicate adding the libV12.so library as well as socket, nsl, pthread and rt system libraries.
For example:
CC engine.cpp -mt -o engine -Iheaders -R . -L . -lV12 -lsocket -lnsl -lpthread -lrt
When compiling, it is necessary to indicate adding the libV12.so library, the pthread system library and to use the following compiler options:
For example:
g++ -O -DNDEBUG -D_LINUX -fpic -pthread -o connectToGateway ConnectToGateway.o -I../../headers ../../lib/libV12.so -lpthread
License file contains encrypted information about product, company it is issued to, expiration date, restrictions on instances, etc. It is distributed separately from the release package and usually named "engine.license". The file must be placed somewhere on the disk and path to it must be specified in engine.properties file (see
Configuration).
B2BITS FIX Antenna package consists of:
- Dynamic libraries
- Header files
- Samples
- This guide
Samples is a set of pre-built small application accompanied with sources, which demonstrate the usage of the core FIX Antenna functionality.
This directory contains a basic benchmarking tool.
The tool consists of Receiver and Sender.
When you start Receiver it:
- creates session, connects to it as an acceptor;
- waits for incoming messages.
When you start Sender it:
- creates session;
- connects to it as an initiator establishing connection with the acceptor created by the receiver;
- sends a message a certain number of times.
When Receiver gets all message it calculates the performance as a number of received messages divided by the time frame between receiving the first and last messages. When Sender enqueus all messages it calculates the performance as a number of enqueued messages divided by the time frame between put the first and last messages.
There are three configuration files:
- engine.receiver.properties (used by Receiver)
- engine.sender.properties (used by Sender)
- benchmark.properties (used by both Sender and Receiver)
The two first hold the general engine parameters such as listen port, log directory, etc. The third file holds the benchmark properties: session parameters, number of messages to be sent, measuring message source, etc.
All files are pretty well preconfigured and ready to use.
When changing configuration make sure that Sender and Receiver uses different ports and log directories.
Both Receiver and Sender hold two input parameters: engine properties file and sender properties file. To start benchmark run Receiver first
Receiver engine.receiver.properties benchmark.properties
wait for notification
NOTIFICATION: Acceptor created. Waiting for initiator...
then run Sender
Sender engine.sender.properties benchmark.properties
Enjoy the benchmark result on the Receiver's console
This application creates a FIX session in accordance to its arguments (from property file).
Sample support following properties:
- Sender used to identify a firm sending message (SenderCompId).
- Target used to identify a receiving firm (TargetCompId).
- Host is the network address of the computer, to which connection is established.
- Port is the port's network number on the computer, to which connection is established.
- MsgFile is the name of file in which example message is stored.
- Version is the session's version.
- ActiveConnection - specifies which connection will be active, possible values 'primary', 'backup', 'restore'
- InSeqNumber is the expected MsgSeqNum of the next incoming message.
- OutSeqNumber is the MsgSeqNum of the next outgoing message.
- SenderSubId - specifies value of the tag 50.
- TargetSubId - specifies value of the tag 57
- SenderLocationId - specifies value of the tag 142.
- TargetLocationId - specifies value of the tag 143.
- InteractiveResend (true/false). If 'true' then the resending of the messages will be interactive
- Hbi is a heardbeat interval, how often HB messages will be sent
- IntradayLogoutTolerance (true/false). If 'true' then the sequence numbers aren't reset after Logout.
- ForceReconnect: (true/false) session will tries to reconnect when it have to be NonGracefullyTerminated
- IgnoreSeqNumTooLowAtLogon: (true/false) session will ignore situation when received message has SeqNum less than expected and continue working with received SeqNum.
- RejectMessageWhileNoConnection: (true/false) session will reject message if unable to sent during MessageTimeToLive interval
- KeepState: (true/false) when session switch to the backup connection, the previous parameters will be used (host and port will be changed).
- DisableTCPBuffer: (true/false) If 'true' then TCP buffer will be disabled (Nagle algorithm).
- MaxMessagesInBunch - FA allow to merge messages into one package and send it. Parameter specifies maximum amount messages in bunch, 0 - means infinite
- EnableAggresiveSend - If 'true' the seperate exclusive thread will be used to send messages
- AutoSwitchConnection - If 'true' the session allow to automatically switch connection from primary to the backup
- CyclicSwitchConnection - If 'true' the session allow to swtch connection from backup to primary in automatic connection switch mode
- Backup.Host - the network address of the computer, to which backup connection is established.
- Backup.Port - the port's network number on the computer, to which backup connection is established.
- Backup.SenderSubId - similar to the SenderSubId parameter for the backup connection
- Backup.TargetSubId - similar to the TargetSubId parameter for the backup connection
- Backup.SenderLocationId - similar to the SenderLocationId parameter for the backup connection
- Backup.TargetLocationId - similar to the TargetLocationId parameter for the backup connection
- Backup.Hbi - similar to the Hbi parameter for the backup connection
- Backup.IntradayLogoutTolerance - similar to the IntradayLogoutTolerance parameter for the backup connection
- Backup.ForceReconnect - similar to the ForceReconnect parameter for the backup connection
- Backup.IgnoreSeqNumTooLowAtLogon - similar to the IgnoreSeqNumTooLowAtLogon parameter for the backup connection
- Backup.RejectMessageWhileNoConnection - similar to the RejectMessageWhileNoConnection parameter for the backup connection
- Backup.AutoSwitchConnection - similar to the AutoSwitchConnection parameter for the backup connection
- Backup.CyclicSwitchConnection - similar to the CyclicSwitchConnection parameter for the backup connection
When you start ConnectoToGateway it:
- creates session, connects to it as an initiator;
- waits for user commands.
This application creates a FIX session in accordance to its arguments (from command line):
{-optionalParameterName Value} SenderCompId TargetCompId Host Port
Where
- SenderCompId used to identify a firm sending message.
- TargetCompId Target used to identify a receiving firm .
- Host is the network address of the computer, to which connection is established.
- Port is the port's network number on the computer, to which connection is established.
Sample support following optional parameters:
- msgFile is the name of file in which example message is stored.
- version is the session's version.
- inSeqNumber is the expected MsgSeqNum of the next incoming message.
- senderSubId - specifies value of the tag 50.
- targetSubId - specifies value of the tag 57
- senderLocationId - specifies value of the tag 142.
- targetLocationId - specifies value of the tag 143.
- interactiveResend (true/false) If 'true' then the resending of the messages will be interactive
- showMessages (true/false) If 'true' then sent and received messages will be showed at console
- msgPackageSize Number of messages for one package sending
- msgPackageDelay Delay between packages (msec)
- tcpBufferDisabled When true - TCP buffer is disabled.
- maxMessagesInBunch Max amount joined outgoing messages.
When you start ConnectoToGateway it:
- creates session, connects to it as an initiator;
- waits for user commands.
EchoServer creates and maintains FIX sessions, initiated by the other side, receives application-level FIX messages and sends them back to the initiator.
When you start EchoServer it:
- creates registered session, connects to it as an acceptor;
- allow to accept incoming connections and create corresponding acceptor sessions
- All incoming application messages will be send back to the sender (echo)
- waits for user commands.
This directory contains a basic benchmarking tool for the FIX over FAST sessions.
The tool consists of Receiver and Sender.
When you start Receiver it:
- creates session, connects to it as an acceptor;
- waits for incoming messages.
When you start Sender it:
- creates session;
- connects to it as an initiator establishing connection with the acceptor created by the receiver;
- sends a message a certain number of times.
When Receiver gets all message it calculates the performance as a number of received messages divided by the time frame between receiving the first and last messages. When Sender enqueus all messages it calculates the performance as a number of enqueued messages divided by the time frame between put the first and last messages.
There are three configuration files:
- engine.receiver.properties (used by Receiver)
- engine.sender.properties (used by Sender)
- benchmark.properties (used by both Sender and Receiver)
The two first hold the general engine parameters such as listen port, log directory, etc. The third file holds the benchmark properties: session parameters, number of messages to be sent, measuring message source, etc.
All files are pretty well preconfigured and ready to use.
When changing configuration make sure that Sender and Receiver uses different ports and log directories.
Both Receiver and Sender hold two input parameters: engine properties file and sender properties file. To start benchmark run Receiver first
Receiver engine.receiver.properties benchmark.properties
wait for notification
NOTIFICATION: Acceptor created. Waiting for initiator...
then run Sender
Sender engine.sender.properties benchmark.properties
Enjoy the benchmark result on the Receiver's console
This application creates a FIX over FAST session in accordance with its command-line arguments:
{-optionalParameterName Value} SenderCompId TargetCompId Host Port
Where
- SenderCompId - Assigned value used to identify a firm sending message.
- TargetCompId - Assigned value used to identify a receiving firm.
- Host - Network address of the computer, to which connection is established.
- Port - Port's network number on the computer, to which connection is established.
Optional parameters:
- msgFile Name of file in which example message is stored.
- version Session's version.
- inSeqNumber The expected MsgSeqNum of the next incoming message.
- senderSubId SenderSubID (tag = 50).
- targetSubId TargetSubID (tag = 57).
- senderLocationId SenderLocationID (tag = 142).
- targetLocationId TargetLocationID (tag = 143).
- interactiveResend (true/false) If 'true' then the resending of the messages will be interactive
- showMessages (true/false) If 'true' then sent and received messages will be showed at console
- msgPackageSize Number of messages for one package sending
- msgPackageDelay Delay between packages (msec)
When you start FastConnectoToGateway it:
- creates session, connects to it as an initiator;
- waits for user commands.
FAST EchoServer creates and maintains FIX over FAST sessions, initiated by the other side, receives application-level FIX messages and sends them back to the initiator.
When you start FastEchoServer it:
- creates registered FIX over FAST session, connects to it as an acceptor;
- allow to accept incoming connections and create corresponding acceptor FIX over FAST sessions
- All incoming application messages will be send back to the sender (echo)
- waits for user commands.
Sample that shows an example of how to get statistical information from FIX Antenna. Sample creates sessions and sends messages in accordance to its arguments (from command line):
<engine properties file> <fix protocol: 4.0-4.4> <file with message> <message amount>
Where
- <engine properties="" file>=""> - file with FixAntenna parameters
- <fix protocol: 4.0-4.4> - version of the sessions
- <file with="" message>=""> - file that contains sample message
- <message amount>=""> - specifies how many times sample message will be send
When you start FixMTStatistics it:
- creates FIX session, connects to it as an acceptor;
- creates FIX session, connects to it as an initiator;
- sends sample message
- retrives statistical information and shows it
Creates session acceptor. Done.
Create session initiator. Done.
Send 100 messages to acceptor. Done.
All 100 messages have been sent. Close session.
Engine statistics:
Average received message handling time: 8.1e-005 sec.
Average received message 'D' handling time: 8.2e-005 sec.
Average send message handling time: 0.000483 sec.
Average send message 'D' handling time: 0.000483 sec.
Average message validation time: 0 sec.
Average 'D' message validation time: 0 sec.
Message received: 103
Message sent: 12
Total message procceed: 115
Sample that demonstrates how to create and use transient FIX sessions i.e. sessions, which do not have persistence. Sample creates sessions and sends messages in accordance to its arguments (from command line):
<engine properties file> <file with message> <message amount>
Where
- <engine properties="" file>=""> - file with FixAntenna parameters
- <file with="" message>=""> - file that contains sample message
- <message amount>=""> - specifies how many times sample message will be send
When you start TransientSession it:
- creates FIX session, connects to it as an acceptor;
- creates FIX session, connects to it as an initiator;
- sends sample message
- retrives statistical information and shows it
Creates session acceptor. Done.
Create session initiator. Done.
Send 100 messages to acceptor. Done.
All 100 messages have been sent. Close session.
Engine statistics:
Average received message handling time: 1.5e-005 sec.
Average received message 'D' handling time: 1.6e-005 sec.
Average send message handling time: 0.000142 sec.
Average send message 'D' handling time: 0.000142 sec.
Total message procceed: 120
TrEchoServer creates and maintains transient FIX sessions ( i.e. sessions, which do not have persistence), initiated by the other side, receives application-level FIX messages and sends them back to the initiator. When you start TrEchoServer it:
- creates registered session, connects to it as an acceptor;
- allow to accept incoming connections and create corresponding acceptor sessions
- All incoming application messages will be send back to the sender (echo)
- waits for user commands.
To uninstall FIX Antenna simply remove the FIX Antenna directory from disk. It is recommended to keep license file though.