General statements
FIXEdge SDK allows developer to create custom plugins for FIXEdge: Transport Adaptors and Handlers.
Structure of FIXEdge SDK
cmakeModules - CMake modules
Headers - C++ headers files for FIXAntenna C++ (FA) and for FIXEdge (FE)
Libs - release version of FA C++ static libraries
src_Handler - source of sample Handler
src_TA - source of sample Transport Adaptor
Requirements
FIXEDge SDK is available for windows (MS Visual Studio 2010, x64) and linux (RHEL 6, gcc44, x64)
CMake v 2.8 should be used to prepare the solution of sample Handler and sample Transport Adaptor
Xerces-c 2.8 (headers and dynamic libraries) is required for building the sample Handler project.
Note: as for future release of FIXEdge (5.11) xerces-c 3.1 is used then it also will be used in SDK instead of xerces-c 2.8
How to build samples
- Export a system variable pointing to the XERCES-C: export XERCESCROOT=/home/user/extlibs/xerces-c-src_2_8_0
- Create a folder for build:
$ mkdir ./build
$ cd ./build - Run CMake:
$ cmake -G "Unix Makefiles" ../
or (Windows)
> cmake.exe -G "Visual Studio 10 Win64" ../ - Build shared libraries:
$ make
or (Windows)
build b2b_fixserver_development_ta.sln (Release, MD)
Handler and Transport Adaptor Features
Handler is a lightweight plugin for FIXEdge. It is suited for using in following scenarios:
- make some modifications on incoming FIX Messages (add|delete|modify some tags based on some conditions that is difficult to implement in BL XML or BL JS) and pass it back to BL or TransportAdaptor
There are already implemented Handlers - see FIXEdge BL Handlers for more info.
Transport Adaptor is more complicated plugin. It is suited for using in following scenarios where adapting FIX Session to any other kind of session is required:
- establish a connection to any non-FIX endpoints (such as SMTP - SMTP TA, IBM MQ, HTTPS, JMS and so on) and provide a data flow between these endpoints and FIX Sessions.
- periodically polling of any FIX or non-FIX endpoints
There are already implemented Transport Adaptors - see FIXEdge Transport Adaptors for more info.
Feature | Handler | Transport Adaptor |
---|---|---|
Load | reloads each time after BL Rules are reloaded loads only if reference to Handler exists in some BL rule | once at FE start |
ClientID | doesn't have a ClientID. Can't be referenced by another Handler or TA. | Can register several ClientIDs |
Incoming messages | Can be addressed from BL Rules using <HandlerAction> tag only message is coming to process method | Messages to each of ClientID can be passed from BL <Send> tag, or from another TA or Handler. Message is coming into sendToClient method |
Outgoing messages | Can just pass original or transformed message to the BL Can send synchronously to any registered ClientID Can send asynchronously to any registed ClientID | Can be send to BL only via onMessageFromClient method. onMessageFromClient can't be called from the same thread as sendToClient |
History access | has direct access to any configured on BL History | for Bridge Adaptors only (see FIXEdge Transport Adaptors Developer Guide) for more details |
Configuration | in BL_Config.xml | in FIXEdge.properties |
More detailed info on developing custom Handler see FIXEdge BL Handlers Developer Guide
More detailed info on developing custom Transport Adaptor see FIXEdge Transport Adaptors Developer Guide