Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2e750ef832 | ||
|
|
f85e3a95f6 | ||
|
|
7ab5173ee2 | ||
|
|
5fb0df8f1b |
No files matched your search
Vendored
+4
-1
@@ -26,7 +26,10 @@
|
||||
|
||||
"problemMatcher": {
|
||||
"base": "$gcc",
|
||||
"fileLocation": "relative"
|
||||
"fileLocation": [
|
||||
"relative",
|
||||
"${workspaceFolder}"
|
||||
]
|
||||
},
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
|
||||
@@ -1 +1 @@
|
||||
set(sources ;cmds/CmdRegistry.cpp;cmds/ConfigCheck.cpp;cmds/Help.cpp;cmds/Md.cpp;cmds/Run.cpp;cmds/RunSim.cpp;cmds/Test.cpp;cmds/TestCeloxica.cpp;cmds/TestOrderman.cpp;event_grid/EventNode.cpp;exchange_sim/Application.cpp;exchange_sim/ExchangeSim.cpp;exchange_sim/Market.cpp;jetfix/codec/FIXArray.cpp;jetfix/common/OutFIX.cpp;jetfix/connection/AsyncReader.cpp;jetfix/connection/IConnection.cpp;jetfix/connection/SocketConnection.cpp;jetfix/gateway/CoreGateway.cpp;jetfix/gateway/JetFIXGateway.cpp;jetfix/gateway/Session.cpp;jetfix/store/FIXFileStore.cpp;jetfix/store/session_name.cpp;jetfix/tests/async_reader_tests.cpp;jetfix/tests/decoding_tests.cpp;jetfix/tests/fix_encoding_stream_tests.cpp;jetfix/tests/fix_fragment_tests.cpp;jetfix/tests/jetfix_performance_tests.cpp;jetfix/tests/store_tests.cpp;main.cpp;md/platforms/celoxica/CXListener.cpp;md/platforms/celoxica/CXMain.cpp;md/platforms/celoxica/tests/cx_tests.cpp;md/platforms/mdp3_onixs/MDP3Listener.cpp;md/platforms/mdp3_onixs/MDP3Main.cpp;md/platforms/mdp3_onixs/MDP3Utils.cpp;md/platforms/mdp3_onixs/tests/mdp3_tests.cpp;md/run_md.cpp;orderman/components/FillRecorder.cpp;orderman/components/Gateway.cpp;orderman/components/MDSource.cpp;orderman/components/NativeOrderMan.cpp;orderman/components/OrderRecorder.cpp;orderman/components/SpreaderOrderMan.cpp;orderman/events/ExecutionReport.cpp;orderman/events/NativeOrderStateChange.cpp;orderman/events/SpreaderOrderStateChange.cpp;orderman/events/TimeChange.cpp;orderman/native_orders/NativeOrder.cpp;orderman/native_orders/NativeOrderBuilder.cpp;orderman/native_orders/NativeOrderFactory.cpp;orderman/persistence/FillDB.cpp;orderman/persistence/OrderDB.cpp;orderman/persistence/gen_order_id.cpp;orderman/service/OrderServiceServer.cpp;orderman/spreader_orders/SpreaderOrder.cpp;orderman/spreader_orders/SpreaderOrderBase.cpp;orderman/tests/spreader_order_tests.cpp;orderman/utils/fix_order_codec.cpp;orderman/utils/orderman_utils.cpp;persistence/IStore.cpp;persistence/PersistenceServiceServer.cpp;persistence/SqliteStore.cpp;persistence/tests/PersistenceServiceTests.cpp;risk_limits/IRiskLimitObserver.cpp;risk_limits/RiskLimitManager.cpp;risk_limits/RiskLimiter.cpp;risk_limits/SharedRiskLimiter.cpp;risk_limits/SymbolKey.cpp;risk_limits/tests/RiskLimitsTests.cpp;securities/SecurityDB.cpp;spreader/QuoteLegPriceQuantityState.cpp;spreader/SingleFillHedger.cpp;spreader/SingleLegQuoter.cpp;spreader/SpreaderBase.cpp;testing/catch_test_runner.cpp;user/UserServiceServer.cpp)
|
||||
set(sources ;cmds/Celoxica.cpp;cmds/CmdRegistry.cpp;cmds/ConfigCheck.cpp;cmds/Help.cpp;cmds/Md.cpp;cmds/Run.cpp;cmds/RunSim.cpp;cmds/Test.cpp;cmds/TestOrderman.cpp;event_grid/EventNode.cpp;exchange_sim/Application.cpp;exchange_sim/ExchangeSim.cpp;exchange_sim/Market.cpp;jetfix/codec/FIXArray.cpp;jetfix/common/OutFIX.cpp;jetfix/connection/AsyncReader.cpp;jetfix/connection/IConnection.cpp;jetfix/connection/SocketConnection.cpp;jetfix/gateway/CoreGateway.cpp;jetfix/gateway/JetFIXGateway.cpp;jetfix/gateway/Session.cpp;jetfix/store/FIXFileStore.cpp;jetfix/store/session_name.cpp;jetfix/tests/async_reader_tests.cpp;jetfix/tests/decoding_tests.cpp;jetfix/tests/fix_encoding_stream_tests.cpp;jetfix/tests/fix_fragment_tests.cpp;jetfix/tests/jetfix_performance_tests.cpp;jetfix/tests/store_tests.cpp;main.cpp;md/platforms/celoxica/CXListener.cpp;md/platforms/celoxica/CXMain.cpp;md/platforms/celoxica/tests/cx_tests.cpp;md/platforms/mdp3_onixs/MDP3Listener.cpp;md/platforms/mdp3_onixs/MDP3Main.cpp;md/platforms/mdp3_onixs/MDP3Utils.cpp;md/platforms/mdp3_onixs/tests/mdp3_tests.cpp;md/run_md.cpp;orderman/components/FillRecorder.cpp;orderman/components/Gateway.cpp;orderman/components/MDSource.cpp;orderman/components/NativeOrderMan.cpp;orderman/components/OrderRecorder.cpp;orderman/components/SpreaderOrderMan.cpp;orderman/events/ExecutionReport.cpp;orderman/events/NativeOrderStateChange.cpp;orderman/events/SpreaderOrderStateChange.cpp;orderman/events/TimeChange.cpp;orderman/native_orders/NativeOrder.cpp;orderman/native_orders/NativeOrderBuilder.cpp;orderman/native_orders/NativeOrderFactory.cpp;orderman/persistence/FillDB.cpp;orderman/persistence/OrderDB.cpp;orderman/persistence/gen_order_id.cpp;orderman/service/OrderServiceServer.cpp;orderman/spreader_orders/SpreaderOrder.cpp;orderman/spreader_orders/SpreaderOrderBase.cpp;orderman/tests/spreader_order_tests.cpp;orderman/utils/fix_order_codec.cpp;orderman/utils/orderman_utils.cpp;persistence/IStore.cpp;persistence/PersistenceServiceServer.cpp;persistence/SqliteStore.cpp;persistence/tests/PersistenceServiceTests.cpp;risk_limits/IRiskLimitObserver.cpp;risk_limits/RiskLimitManager.cpp;risk_limits/RiskLimiter.cpp;risk_limits/SharedRiskLimiter.cpp;risk_limits/SymbolKey.cpp;risk_limits/tests/RiskLimitsTests.cpp;securities/SecurityDB.cpp;spreader/QuoteLegPriceQuantityState.cpp;spreader/SingleFillHedger.cpp;spreader/SingleLegQuoter.cpp;spreader/SpreaderBase.cpp;testing/catch_test_runner.cpp;user/UserServiceServer.cpp)
|
||||
@@ -26,6 +26,9 @@ add_executable(sparkd ${Sparkd_Sources} ${Proto_Srcs})
|
||||
#include paths
|
||||
target_include_directories( sparkd PUBLIC ${CMAKE_SOURCE_DIR}/src ${CMAKE_BINARY_DIR}/src)
|
||||
|
||||
#celoxica stuff
|
||||
include(${CMAKE_SOURCE_DIR}/tools/celoxica.cmake)
|
||||
|
||||
# linking
|
||||
target_link_libraries( sparkd
|
||||
spark_lib
|
||||
@@ -34,12 +37,13 @@ target_link_libraries( sparkd
|
||||
pugixml
|
||||
onixs-cmemdh-all-4.3.0
|
||||
quickfix
|
||||
${CELOXICA_LIB}
|
||||
-static-libgcc
|
||||
-static-libstdc++
|
||||
-pthread)
|
||||
|
||||
# copy test data
|
||||
file(COPY jetfix/tests/sample_fix.dat DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/test_data)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "TestCeloxica.h"
|
||||
#include "Celoxica.h"
|
||||
|
||||
#include "server/sparkd/md/platforms/celoxica/CXMain.h"
|
||||
#include "server/sparkd/md/platforms/celoxica/CXListener.h"
|
||||
@@ -8,14 +8,14 @@ namespace bts
|
||||
namespace cmd
|
||||
{
|
||||
|
||||
int TestCeloxica::execute(const std::vector<std::string>&)
|
||||
int Celoxica::execute(const std::vector<std::string>&)
|
||||
{
|
||||
bts::md::CXMain main;
|
||||
main.initialize();
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::string TestCeloxica::help()
|
||||
std::string Celoxica::help()
|
||||
{
|
||||
return "\t test BTS <> Celoxica integration \n";
|
||||
}
|
||||
@@ -7,7 +7,7 @@ namespace bts
|
||||
namespace cmd
|
||||
{
|
||||
|
||||
class TestCeloxica : public ICmd
|
||||
class Celoxica : public ICmd
|
||||
{
|
||||
public:
|
||||
int execute(std::vector<std::string> const &args);
|
||||
@@ -15,7 +15,7 @@
|
||||
#include "server/sparkd/cmds/Run.h"
|
||||
#include "server/sparkd/cmds/Help.h"
|
||||
#include "server/sparkd/cmds/TestOrderman.h"
|
||||
#include "server/sparkd/cmds/TestCeloxica.h"
|
||||
#include "server/sparkd/cmds/Celoxica.h"
|
||||
#include "server/sparkd/cmds/Md.h"
|
||||
#include "server/sparkd/cmds/ConfigCheck.h"
|
||||
#include "server/sparkd/cmds/RunSim.h"
|
||||
@@ -34,7 +34,7 @@ int main( int argc, const char*argv[] )
|
||||
REGISTER (Run);
|
||||
REGISTER (Md);
|
||||
REGISTER (TestOrderman);
|
||||
REGISTER (TestCeloxica);
|
||||
REGISTER (Celoxica);
|
||||
REGISTER (ConfigCheck);
|
||||
REGISTER (RunSim);
|
||||
END_CMD;
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include <tuple>
|
||||
|
||||
namespace celoxica { namespace gmac {} }
|
||||
#include "celoxica.h"
|
||||
using namespace celoxica::gmac;
|
||||
using namespace std;
|
||||
using namespace bts::md2;
|
||||
@@ -49,6 +48,10 @@ void CXListener::add_software_filter(const std::string& symbol)
|
||||
//for (const auto& str : _symbol_filter_storage) {
|
||||
// _symbol_filter.insert(onixs::StringRef(str));
|
||||
//}
|
||||
}
|
||||
|
||||
void CXListener::heartbeat()
|
||||
{
|
||||
}
|
||||
|
||||
void CXListener::on_GMACMessageOrderDepthV3(const GMACMessageOrderDepthV3*)
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "lib/md/coconut2.h"
|
||||
#include "lib/utils/Dispatcher.h"
|
||||
#include "server/sparkd/md/platforms/celoxica/CXSecurityIndex.h"
|
||||
#include "celoxica.h"
|
||||
|
||||
#include <tbb/concurrent_queue.h>
|
||||
#include <vector>
|
||||
@@ -13,8 +14,6 @@ namespace bts
|
||||
{
|
||||
namespace md
|
||||
{
|
||||
struct GMACMessageOrderDepthV3;
|
||||
|
||||
class CXListener
|
||||
{
|
||||
public:
|
||||
@@ -23,8 +22,10 @@ public:
|
||||
~CXListener();
|
||||
|
||||
void add_software_filter(const std::string& symbol);
|
||||
void heartbeat();
|
||||
|
||||
void on_GMACMessageOrderDepthV3(const GMACMessageOrderDepthV3*);
|
||||
public:
|
||||
void on_GMACMessageOrderDepthV3(const celoxica::gmac::GMACMessageOrderDepthV3*);
|
||||
|
||||
private:
|
||||
void flush_books();
|
||||
|
||||
@@ -11,15 +11,9 @@
|
||||
#include "lib/config/protos/MarketData.pb.h"
|
||||
#include "lib/config/protos/system.pb.h"
|
||||
|
||||
namespace celoxica { namespace gmac {} }
|
||||
#include "celoxica.h"
|
||||
|
||||
extern "C"
|
||||
{
|
||||
#define __retcode_start__
|
||||
#define __retcode_end__
|
||||
}
|
||||
|
||||
#include <signal.h>
|
||||
#include <memory>
|
||||
#include <set>
|
||||
|
||||
@@ -27,56 +21,232 @@ using namespace std;
|
||||
using namespace bts::md2;
|
||||
using namespace celoxica::gmac;
|
||||
|
||||
using ChannelMap = boost::container::flat_map<int, GMACChannelID>;
|
||||
|
||||
namespace bts
|
||||
{
|
||||
namespace md
|
||||
{
|
||||
|
||||
void run_cx_server(UserSymbol* psyms, size_t symcount)
|
||||
//void run_cx_server(UserSymbol* psyms, size_t symcount)
|
||||
//{
|
||||
// CXMain main;
|
||||
// vector<UserSymbol> symbols;
|
||||
// for(size_t x = 0; x < symcount; ++x) {
|
||||
// symbols.push_back(psyms[x]);
|
||||
// }
|
||||
// main.run(symbols);
|
||||
//}
|
||||
|
||||
|
||||
class CXInit
|
||||
{
|
||||
CXMain main;
|
||||
vector<UserSymbol> symbols;
|
||||
for(size_t x = 0; x < symcount; ++x) {
|
||||
symbols.push_back(psyms[x]);
|
||||
public:
|
||||
CXInit() : gmac(), queue_count(0)
|
||||
{
|
||||
signal(SIGINT, &CXInit::signal_stop);
|
||||
GMACIdentify(stdout);
|
||||
ConfigStatus cfg_status;
|
||||
ConfigSetDefaultErrorHandler();
|
||||
Config* cfg;
|
||||
ConfigOpen(&cfg);
|
||||
std::string file = "./gmac.cfg";
|
||||
if((cfg_status = ConfigParseFile(cfg, file.c_str())) != CONFIG_STATUS_OK)
|
||||
{
|
||||
LOG(MarketData, Error, "CX_CME: Unable to parse config file {} {} {}",
|
||||
file, cfg_status, std::string(ConfigStatusToString(cfg_status)));
|
||||
bts_assert_msg(false, "unable to configure gmac");
|
||||
}
|
||||
GMACStatus status = GMACOpen(&gmac, ConfigOption(cfg, "GMAC"));
|
||||
ConfigClose(cfg);
|
||||
if(status != GMAC_STATUS_OK)
|
||||
{
|
||||
LOG(MarketData, Error, "CX_CME: Unable to open gmac {}", std::string(GMACStatusToString(status)));
|
||||
bts_assert_msg(false, "unable to open gmac ");
|
||||
}
|
||||
GMACRegisterErrorHandler(gmac, &handle_error);
|
||||
}
|
||||
main.run(symbols);
|
||||
}
|
||||
|
||||
static GMACStatus handle_error(GMACHandle* gmac, GMACStatus status_code,
|
||||
const char *function, const char *msg)
|
||||
{
|
||||
UNUSED(gmac);
|
||||
LOG(MarketData, Warn, "CX_CME: GMac Error {} ({} {})", std::string(GMACStatusToString(status_code)),
|
||||
std::string(function), std::string(msg));
|
||||
return status_code;
|
||||
}
|
||||
|
||||
static void signal_stop(int signal = 0)
|
||||
{
|
||||
UNUSED(signal);
|
||||
stop_flag = true;
|
||||
}
|
||||
|
||||
int reserve_queue()
|
||||
{
|
||||
return queue_count++;
|
||||
}
|
||||
|
||||
~CXInit()
|
||||
{
|
||||
GMACClose(gmac);
|
||||
}
|
||||
|
||||
GMACHandle* gmac;
|
||||
int queue_count;
|
||||
static bool stop_flag;
|
||||
};
|
||||
|
||||
bool CXInit::stop_flag = false;
|
||||
|
||||
CXMain::CXMain() :
|
||||
_producer(co2::PLATFORM_CELOXICA),
|
||||
_security_recorder(),
|
||||
_settlement_recorder(co2::PLATFORM_CELOXICA),
|
||||
_listeners()
|
||||
{
|
||||
_listeners(),
|
||||
_queue_id()
|
||||
{
|
||||
}
|
||||
|
||||
CXMain::~CXMain() {}
|
||||
|
||||
void CXMain::initialize()
|
||||
CXInit* CXMain::initialize()
|
||||
{
|
||||
//celoxica::gmac::GMACIdentify(stderr);
|
||||
//const auto& options = config::get<CMEOptions>();
|
||||
|
||||
static CXInit init;
|
||||
_queue_id = init.reserve_queue();
|
||||
return &init;
|
||||
}
|
||||
|
||||
void build_channel_map(CXInit* init, ChannelMap& channel_map)
|
||||
{
|
||||
GMACObjID market_id = 0;
|
||||
GMACObjID channels[MAX_MULTICASTS];
|
||||
uint32_t count = 0;
|
||||
GMACStatus status = GMACGetObjList(init->gmac, GMAC_OBJ_MARKET, market_id, GMAC_OBJ_SRC_CHANNEL, channels,
|
||||
&count, sizeof(channels) / sizeof(channels[0]));
|
||||
if(status != GMAC_STATUS_OK)
|
||||
{
|
||||
LOG(MarketData, Error, "Fail on GMACGetObjList(channels) {}", std::string(GMACStatusToString(status)));
|
||||
bts_assert_msg(false, "Fail on GMACGetObjList(channels)");
|
||||
}
|
||||
|
||||
for(uint32_t i = 0; i < count; i++)
|
||||
{
|
||||
GMACStats *stats; //all sorts of statistics about the multicast
|
||||
status = GMACStatsMulticast(init->gmac, channels[i], &stats);
|
||||
if(status == GMAC_STATUS_OK)
|
||||
channel_map[stats->LocalChannelID] = channels[i];
|
||||
}
|
||||
}
|
||||
|
||||
void CXMain::run(std::vector<UserSymbol>& symbols)
|
||||
{
|
||||
bts::md::await_cme_config();
|
||||
initialize();
|
||||
await_cme_config();
|
||||
CXInit* init = initialize();
|
||||
|
||||
parse_channels(symbols);
|
||||
// const auto& channels = parse_channels(symbols);
|
||||
//TODO clean up this channel madness
|
||||
ChannelMap channel_map;
|
||||
build_channel_map(init, channel_map);
|
||||
const auto& channels = parse_channels(symbols);
|
||||
for(const auto& channel : channels)
|
||||
{
|
||||
auto ci = channel_map.find(atoi(channel.id.c_str()));
|
||||
if(ci != channel_map.end())
|
||||
{
|
||||
_listeners[ci->second] = prepare_listener(channel);
|
||||
std::stringstream symstr;
|
||||
for(const auto& sym : channel.symbols) { symstr << sym.symbol() << "-" << SecurityType_Name(sym.type()) << " "; }
|
||||
LOG(MarketData, Info, "CX_CME: Initialized channel {} ({})", channel.id, symstr.str());
|
||||
}
|
||||
}
|
||||
auto& disp = utils::Dispatcher::current();
|
||||
utils::DispatcherTimer security_timer(disp, 500, [&]() {
|
||||
_security_recorder.do_work();
|
||||
});
|
||||
security_timer.start();
|
||||
|
||||
utils::DispatcherTimer spread_resolve_timer(disp, 1000, [&]() {
|
||||
_index.resolve_spreads();
|
||||
});
|
||||
spread_resolve_timer.start();
|
||||
|
||||
utils::DispatcherTimer settlement_timer(disp, 100, [&]() {
|
||||
_settlement_recorder.do_work();
|
||||
});
|
||||
settlement_timer.start();
|
||||
|
||||
utils::DispatcherTimer heartbeat_timer(disp, 250, [&]() {
|
||||
for(const auto& listener : _listeners) {
|
||||
listener.second->heartbeat();
|
||||
}
|
||||
});
|
||||
heartbeat_timer.start();
|
||||
|
||||
auto& message_disp = utils::Dispatcher::create_new("CXDispatcher");
|
||||
message_disp.post([&]() { dispatch_loop(init); });
|
||||
message_disp.run();
|
||||
|
||||
LOG(MarketData, Info, "** CX_CME Publisher started **");
|
||||
disp.run();
|
||||
}
|
||||
|
||||
|
||||
|
||||
std::unique_ptr<CXListener> CXMain::prepare_listener(const std::string& channel, const CMEChannel&)
|
||||
std::unique_ptr<CXListener> CXMain::prepare_listener(const CMEChannel& channel)
|
||||
{
|
||||
UNUSED(channel);
|
||||
return std::unique_ptr<CXListener>();
|
||||
}
|
||||
|
||||
void CXMain::dispatch_loop(CXInit* init)
|
||||
{
|
||||
GMACStatus st = GMACQueueInit(init->gmac, _queue_id, _queue_id /*TODO queue to cpu mapping*/);
|
||||
if(GMAC_STATUS_OK != st)
|
||||
{
|
||||
LOG(MarketData, Error, "CX_CME: Unable to open GMAC queue {}", _queue_id);
|
||||
init->stop_flag = true;
|
||||
}
|
||||
while(!init->stop_flag)
|
||||
{
|
||||
char* data; GMACChannelID channel;
|
||||
st = GMACQueueRead(init->gmac, _queue_id, &data, &channel);
|
||||
if(st == GMAC_STATUS_NODATA)
|
||||
continue; //if there are no data, keep polling
|
||||
process_message(data, channel);
|
||||
GMACQueueRelease(init->gmac, data);
|
||||
}
|
||||
GMACQueueClose(init->gmac, _queue_id);
|
||||
}
|
||||
|
||||
#define PRINT_BOOK_UPDATE(str, ...) do { printf("TOB_BOOK_UPDATE: " str, ## __VA_ARGS__); } while(0)
|
||||
|
||||
void CXMain::process_message(char* data, GMACChannelID channel)
|
||||
{
|
||||
UNUSED(channel);
|
||||
GMACPacketHeader* header = (GMACPacketHeader*)data; //packet header is always at the beginning of the data payload
|
||||
data += sizeof(GMACPacketHeader); //advance further
|
||||
for(uint32_t i = 0; i < header->TranscodedMessages; i++)
|
||||
{
|
||||
//message header is first in all message structures, so it is safe to cast the mesasge to the header
|
||||
GMACMessageHeader *msg = (GMACMessageHeader*)data;
|
||||
data += msg->Length + msg->ExtensionsLength; //advance the reading pointer
|
||||
switch(msg->MsgType)
|
||||
{
|
||||
case GMAC_TYPE_ORDER_DEPTH_V3:// needed for book driven feed
|
||||
{
|
||||
GMACMessageOrderDepthV3* m = (GMACMessageOrderDepthV3*)msg;
|
||||
PRINT_BOOK_UPDATE("N %2d %-16lu %-16lu \n", m->Side, m->Quantity, m->Price);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int CXMain::test_init()
|
||||
{
|
||||
std::vector<UserSymbol> symbols;
|
||||
symbols.push_back(UserSymbol("ES", api::VENUE_GLBX, api::SECURITYTYPE_FUTURE));
|
||||
run(symbols);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,16 +7,27 @@
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <boost/container/flat_map.hpp>
|
||||
|
||||
namespace celoxica
|
||||
{
|
||||
namespace gmac
|
||||
{
|
||||
struct __GMACHandle;
|
||||
typedef struct __GMACHandle GMACHandle;
|
||||
typedef uint32_t GMACChannelID;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
namespace bts
|
||||
{
|
||||
namespace cmd { class Celoxica; }
|
||||
namespace md
|
||||
{
|
||||
void run_cx_server(md2::UserSymbol* sym, size_t symcount);
|
||||
|
||||
struct CMEChannel;
|
||||
class CXListener;
|
||||
class CXInit;
|
||||
|
||||
/*
|
||||
* The CX provider is very simple. 1 CXMain maps to 1 Celoxica Queue, which maps to 1 thread and one bound CPU.
|
||||
@@ -30,10 +41,17 @@ public:
|
||||
CXMain();
|
||||
~CXMain();
|
||||
|
||||
void run(std::vector<md2::UserSymbol>&); //call initialize, start the pump
|
||||
void initialize(); //set up channels, etc
|
||||
void run(std::vector<md2::UserSymbol>&);
|
||||
|
||||
std::unique_ptr<CXListener> prepare_listener(const std::string& channel, const CMEChannel&);
|
||||
private:
|
||||
std::unique_ptr<CXListener> prepare_listener(const CMEChannel&);
|
||||
CXInit* initialize();
|
||||
void dispatch_loop(CXInit* init);
|
||||
void process_message(char* data, celoxica::gmac::GMACChannelID);
|
||||
|
||||
private:
|
||||
friend class bts::cmd::Celoxica;
|
||||
int test_init();
|
||||
|
||||
private:
|
||||
BTS_NO_COPY(CXMain);
|
||||
@@ -42,7 +60,9 @@ private:
|
||||
md2::MDProducer _producer;
|
||||
md2::SecurityIDRecorder _security_recorder;
|
||||
co2::SettlementRecorder _settlement_recorder;
|
||||
std::vector<std::unique_ptr<CXListener>> _listeners;
|
||||
|
||||
boost::container::flat_map<celoxica::gmac::GMACChannelID, std::unique_ptr<CXListener>> _listeners;
|
||||
int _queue_id;
|
||||
};
|
||||
|
||||
}}//namespace
|
||||
|
||||
@@ -5,9 +5,11 @@ namespace celoxica
|
||||
namespace gmac
|
||||
{
|
||||
|
||||
#include "celoxica/gmac.h"
|
||||
#include "celoxica/objects.h"
|
||||
#include "celoxica/gmac_template_v3.h"
|
||||
#include "celoxica/gmac_info.h"
|
||||
|
||||
#include "celoxica/gmac_stats.h"
|
||||
#include "celoxica/cpu_timestamp.h"
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,771 @@
|
||||
<!-- NOTE : GXA now has it's own DTD -->
|
||||
|
||||
<!ELEMENT config ( amdc| amdd-itch| filters| gmac| book| lmeasure| amdd-oprav2| streamer| instruments| test | gxa | datafiles | amdd-ise| amdd-dummy | amdd-ice| timediff | amdd-cme| amdd-cme2 | amdd-cmed | amdd-lse | amdd-socket| amdd-opra | streamer-opra| amdd-kit| streamer-ise | air | fix | parameters | gxa-lite)+ >
|
||||
<!ELEMENT amdc ( core-decoder| core-user| cpu| cpu_main | mlockall | maxspeed | lldttruncmask | schedfifo | sched-fifo-user| sched-fifo-decoder| latency-sampling-rate| verbosity| wait-for-link| router_0| router_1| subscriber_0 | subscriber_1| memory-lock| irq-mask| cpu-speed-max| stats-file| bufferpool| board-number| latency-sampling-rate| timeout-user| consumers| logfile| decoder-start-hold| disable-timestamps| register-signal-handler | reorder-table-size | bd-reorder-table-size | reorder-timeout| lldtmtu | schedfifo_main | statsfile | margin | arbitrage)+ >
|
||||
<!ELEMENT gmac ( shm-prefix | verbosity| ade-verbosity | debug-mask | ade-logfile | ade-reader-affinity | ade-reader-queue-size | vlan-toe| reorder-timeout-ns | reorder-max | bufferpool| recovery|
|
||||
recovery-affinity| recovery-logfile| recovery-log-socket| recovery-log-level | subscription| markets| simulated-dropping-chance |
|
||||
simulated-dropping-gap-range | simulated-dropping-pass-alternate | simulated-dropping-on-signal |
|
||||
simulated-dropping-logfile | dumping-threads-affinity | dumping-threads-buffer-size | dumping-folder | input-user |
|
||||
recovery-reconnect-max-retries | recovery-reconnect-backoff-min-seconds | recovery-reconnect-backoff-max-seconds | logfile | max-hw-waiting-packets | recovery-reconnect-no-immediate |
|
||||
force-raw-operation | multicast-timeout-us| reissue-subscriptions | latency-measurement | recovery-async-read-timeout-ms |
|
||||
recovery-async-read-buffer-size | hardware-filtering | print-absent-fields | send-multicast-timeout-messages |
|
||||
other-affinity | register-affinity | register-directory | register-no-sigabrt | normalised-messages | normalized-messages |
|
||||
ade-dump-file-name | ade-dump-max-interval-us | ade-dump-max-packets | ade-dump-on-payload-error )* >
|
||||
<!ELEMENT monitor ( nb-worker | worker-start-port | zmq-pub-string | zmq-router-string )* >
|
||||
<!ELEMENT fix ( channels | parameters )* >
|
||||
<!ELEMENT book ( verbosity| max-queues | cpus | updates-bufferpool | datareferential | gmac | deepbook | order-buffer-size | uncross-user-log-enabled |
|
||||
sched-fifo-priority | ob-debug-check-refresh | ob-debug-log-level | refresh-cycles-max | refresh-on-maximum-gap )* >
|
||||
<!ELEMENT air ( arca-fill-format | air-gateway | air-server | air-vlan | driver-cpu | driver-logfile | logfile | logging-mode | logon-timeout |
|
||||
log-shm-key | log-size | log-alt-file | log-level | log-name |
|
||||
max-instruments | max-limit-databases | max-nb-markets | limit-granularity | shkey-file | shm-dir | shqsize |
|
||||
session-config-path | standalone | verbosity )+ >
|
||||
|
||||
<!ELEMENT lmeasure ( ip-dst-0 | ip-dst-1 | udp-port-dst-0 | udp-port-dst-1 )* >
|
||||
<!ELEMENT router_0 ( vlan| ether| iplist| ip| l4portlist| l4port )* >
|
||||
<!ELEMENT router_1 ( vlan| ether| iplist| ip| l4portlist| l4port )* >
|
||||
<!ELEMENT ip ( #PCDATA | rule-info )* >
|
||||
<!ELEMENT rule-info ( #PCDATA | address-info | portno )* >
|
||||
<!ELEMENT subscriber_0 ( #PCDATA | group-info )* >
|
||||
<!ELEMENT subscriber_1 ( #PCDATA | group-info )* >
|
||||
<!ELEMENT filters ( filter_char_bitmap| filter_symbolorder | filter_string_trie | filter_uint_hash | filter_stringspace_trie | filter_uint_hasha | filter_uint_hashb | filter_specific1 | filter_string_hashb )* >
|
||||
|
||||
<!ELEMENT recovery ( #PCDATA| recovery-enabled| ip| port| ucas| ucap| usap| trader-id| participant-code | host | link | timeout-base | timeout-rate | time-to-retry | timeout-connect | embedsrcaddr | channel )* >
|
||||
<!ELEMENT secondary-recovery ( channel* ) >
|
||||
<!ELEMENT long-recovery ( link* ) >
|
||||
<!ELEMENT refresh ( #PCDATA| link )* >
|
||||
<!ELEMENT refresh-enabled ( #PCDATA ) >
|
||||
<!ELEMENT snapshot-enabled ( #PCDATA ) >
|
||||
<!ELEMENT trades-enabled ( #PCDATA ) >
|
||||
<!ELEMENT channel-definition-file ( #PCDATA ) >
|
||||
<!ELEMENT source-message-logfile (#PCDATA) >
|
||||
<!ELEMENT latency-measurement ( #PCDATA ) >
|
||||
<!ELEMENT ade-dump-file-name ( #PCDATA ) >
|
||||
<!ELEMENT ade-dump-max-interval-us ( #PCDATA ) >
|
||||
<!ELEMENT ade-dump-max-packets ( #PCDATA ) >
|
||||
<!ELEMENT ade-dump-on-payload-error ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT firm-quote ( #PCDATA ) >
|
||||
<!ELEMENT ignore-slow-quote ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT value ( #PCDATA ) >
|
||||
<!ELEMENT length ( #PCDATA ) >
|
||||
<!ELEMENT market-hours ( #PCDATA ) >
|
||||
<!ELEMENT market-prefix ( #PCDATA ) >
|
||||
<!ELEMENT max-payload ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT print-absent-fields ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT market ( #PCDATA | max-payload | market-hours | market-prefix | value | length | channels | authentications | referentials | arbitrage-mode |
|
||||
maximum-gap | max-reg-gap | packet-timeout-ms | connect-wait-sec |
|
||||
task-time-ms-to-live | task-time-ms-to-retry | task-number-of-retries | recovery | secondary-recovery |
|
||||
long-recovery | refresh | refresh-enabled | snapshot-enabled | trades-enabled | channel-definition-file | source-message-logfile |
|
||||
start-seq | instrument-index-type | backoff-period | gateway-ip | credentials | market-mode |
|
||||
loglevel | omit-blockcheck | periods | grp | verbosity | refreshpacket-timeout-ms |
|
||||
maxsymbols | dump | dumpdir | no-make-dumps | embedsrcaddr | retransmissions | snapshots | secondary-snapshots |
|
||||
parameters | logging-sockets | port | ip | connect-timeout | logfile | ignore-slow-quote |
|
||||
source-id | livegroups | markettypes | subscriptions |
|
||||
tcp_server | use-dumps | password | time-zone | expect-repackaged | v3 | symbol-ref-file | write-symbol-ref-file | symbol-ref-queue |
|
||||
test | exchange-timestamp | extension-messages | defaults | venue-ids | firm-quote |
|
||||
drop-unknown-instruments | use-order-depth-multiple | get-index-map | force-local-port | venue-filtering |
|
||||
depth-mode | preferred-interface | preferred-channel | hardware-filtering | hardware-arbitrage | socket-max-retries |
|
||||
socket-max-retries-us | socket-backoff-period-s | remove-routed-trades | normal-hours-orders-only | product | product-name | book-type |
|
||||
max-buffer-timeout-ns | max-channel-buffer | debug-mask | reconnect-timeout | number-of-retries | gap-timeout | max-hw-waiting-packets |
|
||||
version | trading-status-monitoring | ignore-trade-messages | enable-order-executed-trades | use-symbols | generate-referential | legacy-mode | normalised-messages | normalized-messages )* >
|
||||
<!ELEMENT defaults ( price-denominator | price-nominator | currency | lot-size)* >
|
||||
<!ELEMENT tcp_server ( tcp-recovery-enabled | host | port | login | pwd | strip-info )* >
|
||||
<!ELEMENT credentials ( username | password | keyid | deskey | operatingenvironment | sender | sendercompid )* >
|
||||
<!ELEMENT parameters ( recoveryip | recoveryport | secondaryrecoveryip | secondaryrecoveryport | secondaryip | secondaryport | account | account-prefix | application-system-name | application-system-vendor | application-system-version | ask-for-ref | auto-connect |
|
||||
auto-increment | auto-reconnect | branch | cancel-on-disconnect | capacity | checkalive-timeout-s | clearing-instruction | clearing-firm | clearing-account | clientorderid-prefix | backup-channel | client-category |
|
||||
clientinfo-is-account | cti-code | customer-or-firm | customer-info | enhanced-resend-request |
|
||||
deliver-to-comp-id | display | disconnect-timeout-s | eurex-ip-addr | enrichment-rule-id | exchange-info | executing-give-up-firm | fee-billing | pqttrc-file | fixtrc-file |
|
||||
forward-session-rejects | groupid | generate-missing-insert-acks |
|
||||
direct-electronic-access | liquidity-provision | commodity-indicator | investment-decision | execution-decision | client-id | mifid-id |
|
||||
heartbeat-interval | orderint32 | ignore-dup-trades | in-flight-mitigation | init-order-id | intermarket-sweep-eligibility | max-products | login-mode |
|
||||
logonid | logging-file | max-orders | max-strategies | member-id | member-sub-group | minimum-quantity | onbehalfof-comp-id |
|
||||
onbehalfof-location-id | onbehalfof-sub-id | order-capacity | orderdb-size |
|
||||
password | new-password | newpassword | position-effect | products | pub-period | recovery-enabled | reset-sequence | request-enrichment-rules | risk-id | risk-enabled | risk-type-override | risk-maxqty-order | seqnumber | symbol-ref-file | freetext1 | socket-path |
|
||||
risk-max-tradedqty | scale-factor | self-trade-prevention | sender-sub-id | sender-comp-id | sender-location-id | target-sub-id | socket-timeout | socket-throughput | start-seq |user|firm|algo-indicator|
|
||||
security-id | security-type | session-logical-id | sessionsubid | target-comp-id | discard-order-restated |
|
||||
trade-input-source | traders | trader-name | trader-password | tunnel-ip | user-appl-id | username | verbosity |
|
||||
orderid-type | gtc-file | host | large-difference-check | price-check | port | symbol-table-size | socket-path | order-table-size |
|
||||
log-shm-key | log-size | log-alt-file | log-level | cpus | udp-cnx-port | use-v3-neworder | sessions-per-thread | thread-pool-size | rules-file | wide-spread-check)* >
|
||||
|
||||
<!ELEMENT branch ( #PCDATA ) >
|
||||
<!ELEMENT position-effect ( #PCDATA ) >
|
||||
<!ELEMENT trader ( #PCDATA | trader-name | trader-password )* >
|
||||
<!ELEMENT executing-give-up-firm ( #PCDATA ) >
|
||||
<!ELEMENT enrichment-rule-id ( #PCDATA ) >
|
||||
<!ELEMENT customer-info ( #PCDATA ) >
|
||||
<!ELEMENT enhanced-resend-request ( #PCDATA ) >
|
||||
<!ELEMENT exchange-info ( #PCDATA ) >
|
||||
<!ELEMENT login-mode ( #PCDATA ) >
|
||||
<!ELEMENT socket-max-retries ( #PCDATA ) >
|
||||
<!ELEMENT socket-max-retries-us ( #PCDATA ) >
|
||||
<!ELEMENT socket-backoff-period-s ( #PCDATA ) >
|
||||
<!ELEMENT match-info ( #PCDATA | segment-list | currency-list )* >
|
||||
<!ELEMENT grp ( ssid | host | port | login | pwd )* >
|
||||
<!ELEMENT depth-mode ( #PCDATA )* >
|
||||
<!ELEMENT preferred-interface ( #PCDATA )* >
|
||||
<!ELEMENT preferred-channel ( #PCDATA )* >
|
||||
<!ELEMENT remove-routed-trades ( #PCDATA ) >
|
||||
<!ELEMENT normal-hours-orders-only ( #PCDATA ) >
|
||||
<!ELEMENT max-strategies ( #PCDATA ) >
|
||||
<!ELEMENT ignore-dup-trades ( #PCDATA ) >
|
||||
<!ELEMENT book-type ( #PCDATA ) >
|
||||
|
||||
<!-- AMDC -->
|
||||
<!ELEMENT amdd-oprav2 ( bitfile )? >
|
||||
<!ELEMENT amdd-kit ( bitfile )? >
|
||||
<!ELEMENT amdd-lse EMPTY >
|
||||
<!ELEMENT amdd-dummy ( bitfile )? >
|
||||
<!ELEMENT amdd-socket ( bitfile )? >
|
||||
<!ELEMENT bitfile ( #PCDATA ) >
|
||||
<!ELEMENT ip-dst-0 ( #PCDATA ) >
|
||||
<!ELEMENT ip-dst-1 ( #PCDATA ) >
|
||||
<!ELEMENT udp-port-dst-0 ( #PCDATA ) >
|
||||
<!ELEMENT udp-port-dst-1 ( #PCDATA ) >
|
||||
<!ELEMENT core-decoder ( #PCDATA ) >
|
||||
<!ELEMENT core-user ( #PCDATA ) >
|
||||
<!ELEMENT sched-fifo-user ( #PCDATA ) >
|
||||
<!ELEMENT sched-fifo-decoder ( #PCDATA ) >
|
||||
<!ELEMENT wait-for-link ( link )* >
|
||||
<!ELEMENT memory-lock ( #PCDATA ) >
|
||||
<!ELEMENT irq-mask ( #PCDATA ) >
|
||||
<!ELEMENT cpu-speed-max ( #PCDATA ) >
|
||||
<!ELEMENT stats-file ( #PCDATA ) >
|
||||
<!ELEMENT bufferpool ( #PCDATA ) >
|
||||
<!ELEMENT reorder-max ( #PCDATA ) >
|
||||
<!ELEMENT reorder-timeout-ns ( #PCDATA ) >
|
||||
<!ELEMENT reorder-timeout ( #PCDATA ) >
|
||||
<!ELEMENT board-number ( #PCDATA ) >
|
||||
<!ELEMENT latency-sampling-rate ( #PCDATA ) >
|
||||
<!ELEMENT timeout-user ( #PCDATA ) >
|
||||
<!ELEMENT consumers ( #PCDATA ) >
|
||||
<!ELEMENT logfile ( #PCDATA ) >
|
||||
<!ELEMENT decoder-start-hold ( #PCDATA ) >
|
||||
<!ELEMENT disable-timestamps ( #PCDATA ) >
|
||||
<!ELEMENT cpu_main ( #PCDATA ) >
|
||||
<!ELEMENT mlockall ( #PCDATA ) >
|
||||
<!ELEMENT schedfifo ( #PCDATA ) >
|
||||
<!ELEMENT maxspeed ( #PCDATA ) >
|
||||
<!ELEMENT lldttruncmask ( #PCDATA ) >
|
||||
<!ELEMENT schedfifo_main ( #PCDATA ) >
|
||||
<!ELEMENT statsfile ( #PCDATA ) >
|
||||
<!ELEMENT margin ( #PCDATA ) >
|
||||
<!ELEMENT lldtmtu ( link )* >
|
||||
<!ELEMENT reorder-table-size ( #PCDATA ) >
|
||||
<!ELEMENT bd-reorder-table-size ( #PCDATA ) >
|
||||
<!ELEMENT ether ( rule-info )* >
|
||||
<!ELEMENT l4port ( rule-info )* >
|
||||
<!ELEMENT l4portlist ( rule-info )* >
|
||||
<!ELEMENT iplist ( rule-info )* >
|
||||
<!ELEMENT link ( #PCDATA ) >
|
||||
<!ELEMENT address-info ( #PCDATA ) >
|
||||
<!ELEMENT portno ( #PCDATA ) >
|
||||
<!ELEMENT vlan ( rule-info )* >
|
||||
<!ELEMENT filter_char_bitmap ( #PCDATA ) >
|
||||
<!ELEMENT filter_string_trie ( #PCDATA ) >
|
||||
<!ELEMENT filter_symbolorder ( #PCDATA ) >
|
||||
<!ELEMENT filter_uint_hash ( #PCDATA ) >
|
||||
<!ELEMENT filter_stringspace_trie ( #PCDATA ) >
|
||||
<!ELEMENT filter_uint_hasha ( #PCDATA ) >
|
||||
<!ELEMENT filter_uint_hashb ( #PCDATA ) >
|
||||
<!ELEMENT filter_specific1 ( #PCDATA ) >
|
||||
<!ELEMENT filter_string_hashb ( #PCDATA ) >
|
||||
<!-- End Of AMDC -->
|
||||
|
||||
<!-- GMAC Note: for the lists (e.g. channels/channel) update parse.c:isList() as well -->
|
||||
<!ELEMENT channels ( channel+ ) >
|
||||
<!ELEMENT authentications ( authentication+ ) >
|
||||
<!ELEMENT periods ( period+ ) >
|
||||
<!ELEMENT retransmissions ( #PCDATA | channel )* >
|
||||
<!ELEMENT snapshots ( #PCDATA | channel)* >
|
||||
<!ELEMENT secondary-snapshots ( channel* ) >
|
||||
<!ELEMENT referentials ( channel* ) >
|
||||
<!ELEMENT maximum-gap (#PCDATA) >
|
||||
<!ELEMENT max-reg-gap (#PCDATA) >
|
||||
<!ELEMENT packet-timeout-ms (#PCDATA) >
|
||||
<!ELEMENT connect-timeout (#PCDATA) >
|
||||
<!ELEMENT connect-wait-sec (#PCDATA) >
|
||||
<!ELEMENT task-time-ms-to-live (#PCDATA) >
|
||||
<!ELEMENT task-time-ms-to-retry (#PCDATA) >
|
||||
<!ELEMENT refreshpacket-timeout-ms (#PCDATA) >
|
||||
<!ELEMENT task-number-of-retries (#PCDATA) >
|
||||
<!ELEMENT vlan-toe ( #PCDATA ) >
|
||||
<!ELEMENT recovery-log-socket ( #PCDATA ) >
|
||||
<!ELEMENT recovery-log-level ( #PCDATA ) >
|
||||
<!ELEMENT recovery-reconnect-max-retries ( #PCDATA ) >
|
||||
<!ELEMENT recovery-reconnect-backoff-min-seconds ( #PCDATA ) >
|
||||
<!ELEMENT recovery-reconnect-backoff-max-seconds ( #PCDATA ) >
|
||||
<!ELEMENT recovery-reconnect-no-immediate ( #PCDATA ) >
|
||||
<!ELEMENT input-user ( #PCDATA ) >
|
||||
<!ELEMENT markets ( market+ ) >
|
||||
<!ELEMENT products ( product+ ) >
|
||||
<!ELEMENT product ( #PCDATA ) >
|
||||
<!ELEMENT product-name ( #PCDATA ) >
|
||||
<!ELEMENT force-raw-operation ( #PCDATA ) >
|
||||
<!ELEMENT ucap ( #PCDATA ) >
|
||||
<!ELEMENT usap ( #PCDATA ) >
|
||||
<!ELEMENT arbitrage-mode ( #PCDATA ) >
|
||||
<!ELEMENT timeout-base ( #PCDATA ) >
|
||||
<!ELEMENT timeout-rate ( #PCDATA ) >
|
||||
<!ELEMENT time-to-retry ( #PCDATA ) >
|
||||
<!ELEMENT timeout-connect ( #PCDATA ) >
|
||||
<!ELEMENT traders ( trader+ ) >
|
||||
<!ELEMENT host ( #PCDATA ) >
|
||||
<!ELEMENT channel ( #PCDATA ) >
|
||||
<!ELEMENT authentication ( #PCDATA | sender-comp-id | target-comp-id | sender-sub-id | target-sub-id | username | password | linked-channel-id )* >
|
||||
<!ELEMENT period ( #PCDATA ) >
|
||||
<!ELEMENT price ( #PCDATA ) >
|
||||
<!ELEMENT size ( #PCDATA ) >
|
||||
<!ELEMENT price-denominator ( #PCDATA ) >
|
||||
<!ELEMENT price-nominator ( #PCDATA ) >
|
||||
<!ELEMENT currency ( #PCDATA ) >
|
||||
<!ELEMENT lot-size ( #PCDATA ) >
|
||||
<!ELEMENT livegroups ( group-info )* >
|
||||
<!ELEMENT live-testing ( #PCDATA ) >
|
||||
<!ELEMENT subscriptions ( link )* >
|
||||
<!ELEMENT markettypes ( market )* >
|
||||
<!ELEMENT time-zone ( #PCDATA ) >
|
||||
<!ELEMENT expect-repackaged ( #PCDATA ) >
|
||||
<!ELEMENT v3 ( #PCDATA ) >
|
||||
<!ELEMENT symbol-ref-file ( #PCDATA ) >
|
||||
<!ELEMENT symbol-ref-queue ( #PCDATA ) >
|
||||
<!ELEMENT freetext1 ( #PCDATA ) >
|
||||
<!ELEMENT write-symbol-ref-file ( #PCDATA ) >
|
||||
<!ELEMENT exchange-timestamp ( #PCDATA ) >
|
||||
<!ELEMENT extension-messages ( #PCDATA ) >
|
||||
<!ELEMENT max-hw-waiting-packets ( #PCDATA ) >
|
||||
<!ELEMENT use-order-depth-multiple ( #PCDATA ) >
|
||||
<!ELEMENT get-index-map ( #PCDATA ) >
|
||||
<!ELEMENT login ( #PCDATA ) >
|
||||
<!ELEMENT pwd ( #PCDATA ) >
|
||||
<!ELEMENT ssid ( #PCDATA ) >
|
||||
<!ELEMENT strip-info ( #PCDATA ) >
|
||||
<!ELEMENT logging-sockets ( #PCDATA ) >
|
||||
<!ELEMENT use-dumps ( #PCDATA ) >
|
||||
<!ELEMENT source-id ( #PCDATA ) >
|
||||
<!ELEMENT shm-prefix ( #PCDATA ) >
|
||||
<!ELEMENT verbosity ( #PCDATA ) >
|
||||
<!ELEMENT ade-verbosity ( #PCDATA ) >
|
||||
<!ELEMENT ade-reader-affinity ( #PCDATA ) >
|
||||
<!ELEMENT ade-reader-queue-size ( #PCDATA ) >
|
||||
<!ELEMENT enable-priorities ( #PCDATA ) >
|
||||
<!ELEMENT ade-logfile ( #PCDATA ) >
|
||||
<!ELEMENT maxsymbols ( #PCDATA ) >
|
||||
<!ELEMENT drop-unknown-instruments ( #PCDATA ) >
|
||||
<!ELEMENT legacy-mode ( #PCDATA ) >
|
||||
<!ELEMENT dump ( #PCDATA ) >
|
||||
<!ELEMENT dumpdir ( #PCDATA ) >
|
||||
<!ELEMENT no-make-dumps ( #PCDATA ) >
|
||||
<!ELEMENT embedsrcaddr ( #PCDATA ) >
|
||||
<!ELEMENT backoff-period ( #PCDATA ) >
|
||||
<!ELEMENT gateway-ip ( #PCDATA ) >
|
||||
<!ELEMENT loglevel ( #PCDATA ) >
|
||||
<!ELEMENT omit-blockcheck ( #PCDATA ) >
|
||||
<!ELEMENT participant-code ( #PCDATA ) >
|
||||
<!ELEMENT sender ( #PCDATA ) >
|
||||
<!ELEMENT sendercompid ( #PCDATA ) >
|
||||
<!ELEMENT venue ( #PCDATA ) >
|
||||
<!ELEMENT venue-ids ( venue+ ) >
|
||||
<!ELEMENT multicast-timeout-us ( #PCDATA ) >
|
||||
<!ELEMENT reissue-subscriptions ( #PCDATA ) >
|
||||
<!ELEMENT send-multicast-timeout-messages ( #PCDATA ) >
|
||||
<!ELEMENT recovery-async-read-timeout-ms ( #PCDATA ) >
|
||||
<!ELEMENT recovery-async-read-buffer-size ( #PCDATA ) >
|
||||
<!ELEMENT force-local-port ( #PCDATA ) >
|
||||
<!ELEMENT hardware-filtering ( #PCDATA ) >
|
||||
<!ELEMENT hardware-arbitrage ( #PCDATA ) >
|
||||
<!ELEMENT max-channel-buffer ( #PCDATA ) >
|
||||
<!ELEMENT max-buffer-timeout-ns ( #PCDATA ) >
|
||||
<!ELEMENT debug-mask ( #PCDATA ) >
|
||||
<!ELEMENT venue-filtering ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT other-affinity ( #PCDATA ) >
|
||||
<!ELEMENT register-affinity ( #PCDATA ) >
|
||||
<!ELEMENT register-directory ( #PCDATA ) >
|
||||
<!ELEMENT register-no-sigabrt ( #PCDATA ) >
|
||||
<!ELEMENT normalised-messages ( #PCDATA ) >
|
||||
<!ELEMENT normalized-messages ( #PCDATA ) >
|
||||
<!ELEMENT reconnect-timeout ( #PCDATA ) >
|
||||
<!ELEMENT number-of-retries ( #PCDATA ) >
|
||||
<!ELEMENT gap-timeout ( #PCDATA ) >
|
||||
|
||||
<!-- gxa parameters -->
|
||||
|
||||
<!ELEMENT account-prefix ( #PCDATA ) >
|
||||
<!ELEMENT account ( #PCDATA ) >
|
||||
<!ELEMENT recoveryip ( #PCDATA ) >
|
||||
<!ELEMENT recoveryport ( #PCDATA ) >
|
||||
<!ELEMENT secondaryrecoveryip ( #PCDATA ) >
|
||||
<!ELEMENT secondaryrecoveryport ( #PCDATA ) >
|
||||
<!ELEMENT secondaryip ( #PCDATA ) >
|
||||
<!ELEMENT secondaryport ( #PCDATA ) >
|
||||
<!ELEMENT application-system-name ( #PCDATA ) >
|
||||
<!ELEMENT application-system-vendor ( #PCDATA ) >
|
||||
<!ELEMENT application-system-version ( #PCDATA ) >
|
||||
<!ELEMENT ask-for-ref ( #PCDATA ) >
|
||||
<!ELEMENT auto-connect ( #PCDATA) >
|
||||
<!ELEMENT auto-increment ( #PCDATA ) >
|
||||
<!ELEMENT auto-reconnect ( #PCDATA ) >
|
||||
<!ELEMENT capacity ( #PCDATA ) >
|
||||
<!ELEMENT cancel-on-disconnect ( #PCDATA ) >
|
||||
<!ELEMENT backup-channel ( #PCDATA ) >
|
||||
<!ELEMENT clientorderid-prefix ( #PCDATA ) >
|
||||
<!ELEMENT clientinfo-is-account ( #PCDATA ) >
|
||||
<!ELEMENT client-category ( #PCDATA ) >
|
||||
<!ELEMENT disable-audit-log ( #PCDATA ) >
|
||||
<!ELEMENT deliver-to-comp-id ( #PCDATA ) >
|
||||
<!ELEMENT display ( #PCDATA ) >
|
||||
<!ELEMENT eurex-ip-addr ( #PCDATA ) >
|
||||
<!ELEMENT fixtrc-file ( #PCDATA ) >
|
||||
<!ELEMENT generate-missing-insert-acks ( #PCDATA ) >
|
||||
<!ELEMENT pqttrc-file ( #PCDATA ) >
|
||||
<!ELEMENT forward-session-rejects ( #PCDATA ) >
|
||||
<!ELEMENT groupid ( #PCDATA ) >
|
||||
<!ELEMENT gtc-file ( #PCDATA ) >
|
||||
<!ELEMENT intermarket-sweep-eligibility ( #PCDATA ) >
|
||||
<!ELEMENT increment ( #PCDATA ) >
|
||||
<!ELEMENT logonid ( #PCDATA ) >
|
||||
<!ELEMENT seqnumber ( #PCDATA ) >
|
||||
<!ELEMENT sessionsubid ( #PCDATA ) >
|
||||
<!ELEMENT minimum-quantity ( #PCDATA ) >
|
||||
<!ELEMENT self-trade-prevention ( #PCDATA ) >
|
||||
<!ELEMENT sender-sub-id ( #PCDATA ) >
|
||||
<!ELEMENT sender-comp-id ( #PCDATA ) >
|
||||
<!ELEMENT target-sub-id ( #PCDATA ) >
|
||||
<!ELEMENT target-comp-id ( #PCDATA ) >
|
||||
<!ELEMENT linked-channel-id ( #PCDATA ) >
|
||||
<!ELEMENT sender-location-id ( #PCDATA ) >
|
||||
<!ELEMENT heartbeat-interval ( #PCDATA ) >
|
||||
<!ELEMENT orderint32 ( #PCDATA ) >
|
||||
<!ELEMENT customer-or-firm ( #PCDATA ) >
|
||||
<!ELEMENT cti-code ( #PCDATA ) >
|
||||
<!ELEMENT fee-billing ( #PCDATA ) >
|
||||
<!ELEMENT in-flight-mitigation ( #PCDATA ) >
|
||||
<!ELEMENT clearing-instruction (#PCDATA) >
|
||||
<!ELEMENT clearing-firm (#PCDATA) >
|
||||
<!ELEMENT clearing-account (#PCDATA) >
|
||||
<!ELEMENT order-capacity (#PCDATA) >
|
||||
<!ELEMENT orderdb-size (#PCDATA) >
|
||||
<!ELEMENT init-order-id (#PCDATA) >
|
||||
<!ELEMENT keyid ( #PCDATA ) >
|
||||
<!ELEMENT deskey ( #PCDATA ) >
|
||||
<!ELEMENT discard-order-restated ( #PCDATA ) >
|
||||
<!ELEMENT exit-on-connection-errors ( #PCDATA ) >
|
||||
<!ELEMENT max-products ( #PCDATA ) >
|
||||
<!ELEMENT onbehalfof-comp-id ( #PCDATA ) >
|
||||
<!ELEMENT onbehalfof-sub-id ( #PCDATA ) >
|
||||
<!ELEMENT onbehalfof-location-id ( #PCDATA ) >
|
||||
<!ELEMENT operatingenvironment ( #PCDATA ) >
|
||||
<!ELEMENT match ( match-info )+ >
|
||||
<!ELEMENT reconnect-tries ( #PCDATA ) >
|
||||
<!ELEMENT reconnect-timeout-s ( #PCDATA ) >
|
||||
<!ELEMENT risk-id ( #PCDATA ) >
|
||||
<!ELEMENT system-time-timestamps ( #PCDATA ) >
|
||||
<!ELEMENT trade-input-source ( #PCDATA ) >
|
||||
<!ELEMENT thread-name-suffix ( #PCDATA ) >
|
||||
<!ELEMENT checkalive-timeout-s ( #PCDATA ) >
|
||||
<!ELEMENT member-id ( #PCDATA ) >
|
||||
<!ELEMENT member-sub-group ( #PCDATA ) >
|
||||
<!ELEMENT user-appl-id ( #PCDATA ) >
|
||||
<!ELEMENT trader-name ( #PCDATA ) >
|
||||
<!ELEMENT trader-password ( #PCDATA ) >
|
||||
<!ELEMENT session-logical-id ( #PCDATA ) >
|
||||
<!ELEMENT request-enrichment-rules ( #PCDATA ) >
|
||||
<!ELEMENT reset-sequence ( #PCDATA ) >
|
||||
<!ELEMENT risk-enabled ( #PCDATA ) >
|
||||
<!ELEMENT risk-type-override ( #PCDATA ) >
|
||||
<!ELEMENT risk-maxqty-order ( #PCDATA) >
|
||||
<!ELEMENT risk-max-tradedqty ( #PCDATA) >
|
||||
<!ELEMENT security-id ( #PCDATA) >
|
||||
<!ELEMENT security-type ( #PCDATA) >
|
||||
<!ELEMENT use-v3-neworder ( #PCDATA) >
|
||||
<!ELEMENT socket-path ( #PCDATA) >
|
||||
<!ELEMENT user ( #PCDATA) >
|
||||
<!ELEMENT firm ( #PCDATA) >
|
||||
<!ELEMENT algo-indicator ( #PCDATA) >
|
||||
|
||||
<!ELEMENT segment-list ( #PCDATA ) >
|
||||
<!ELEMENT currency-list ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT password ( #PCDATA ) >
|
||||
<!ELEMENT new-password ( #PCDATA ) >
|
||||
<!ELEMENT newpassword ( #PCDATA ) >
|
||||
<!ELEMENT username ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT recovery-affinity ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT recovery-logfile ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT register-signal-handler ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT start-seq ( #PCDATA ) >
|
||||
<!ELEMENT instrument-index-type ( #PCDATA ) >
|
||||
<!ELEMENT market-mode ( #PCDATA ) >
|
||||
|
||||
|
||||
<!ELEMENT subscription ( #PCDATA ) >
|
||||
<!ELEMENT symbol ( #PCDATA ) >
|
||||
<!ELEMENT symbol-table-size ( #PCDATA ) >
|
||||
<!ELEMENT timeinforce ( #PCDATA ) >
|
||||
<!ELEMENT trader-id ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT ucas ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT version ( #PCDATA ) >
|
||||
<!ELEMENT trading-status-monitoring ( #PCDATA ) >
|
||||
<!ELEMENT ignore-trade-messages ( #PCDATA ) >
|
||||
<!ELEMENT enable-order-executed-trades ( #PCDATA ) >
|
||||
<!ELEMENT use-symbols ( #PCDATA ) >
|
||||
<!ELEMENT generate-referential ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT simulated-dropping-chance ( #PCDATA ) >
|
||||
<!ELEMENT simulated-dropping-gap-range ( #PCDATA ) >
|
||||
<!ELEMENT simulated-dropping-pass-alternate ( #PCDATA ) >
|
||||
<!ELEMENT simulated-dropping-on-signal ( #PCDATA ) >
|
||||
<!ELEMENT simulated-dropping-logfile ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT dumping-threads-affinity ( #PCDATA ) >
|
||||
<!ELEMENT dumping-threads-buffer-size ( #PCDATA ) >
|
||||
<!ELEMENT dumping-folder ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT direct-electronic-access ( #PCDATA ) >
|
||||
<!ELEMENT liquidity-provision ( #PCDATA ) >
|
||||
<!ELEMENT commodity-indicator ( #PCDATA ) >
|
||||
<!ELEMENT investment-decision ( #PCDATA ) >
|
||||
<!ELEMENT execution-decision ( #PCDATA ) >
|
||||
<!ELEMENT client-id ( #PCDATA ) >
|
||||
<!ELEMENT mifid-id ( #PCDATA ) >
|
||||
<!-- End Of GMAC -->
|
||||
|
||||
<!-- BOOK -->
|
||||
|
||||
|
||||
|
||||
<!ELEMENT max-queues ( #PCDATA ) >
|
||||
<!ELEMENT cpus ( #PCDATA ) >
|
||||
<!ELEMENT updates-bufferpool ( #PCDATA ) >
|
||||
<!ELEMENT filtering ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT da-instrument ( #PCDATA ) >
|
||||
<!ELEMENT da-local-instrument ( #PCDATA ) >
|
||||
<!ELEMENT da-segment ( #PCDATA ) >
|
||||
<!ELEMENT da-sector ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT sched-fifo-priority ( #PCDATA ) >
|
||||
<!ELEMENT ob-debug-check-refresh ( #PCDATA ) >
|
||||
<!ELEMENT ob-debug-log-level ( #PCDATA ) >
|
||||
<!ELEMENT refresh-cycles-max ( #PCDATA ) >
|
||||
<!ELEMENT refresh-on-maximum-gap ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT datareferential ( verbosity | filtering | da-instrument | da-local-instrument | da-segment | da-sector )* >
|
||||
|
||||
<!ELEMENT deepbook ( market-status-correction | uncrossing-mechanism | uncrossing-log-enabled | check-trade-instrument | da-book-head | da-price-level | da-order-prv )* >
|
||||
|
||||
<!ELEMENT order-buffer-size ( #PCDATA ) >
|
||||
<!ELEMENT uncross-user-log-enabled ( #PCDATA ) >
|
||||
<!ELEMENT uncrossing-mechanism ( #PCDATA ) >
|
||||
<!ELEMENT uncrossing-log-enabled ( #PCDATA ) >
|
||||
<!ELEMENT market-status-correction ( #PCDATA ) >
|
||||
<!ELEMENT da-book-head ( #PCDATA ) >
|
||||
<!ELEMENT da-price-level ( #PCDATA ) >
|
||||
<!ELEMENT da-order-prv ( #PCDATA ) >
|
||||
<!ELEMENT check-trade-instrument ( #PCDATA ) >
|
||||
|
||||
<!-- End Of BOOK -->
|
||||
|
||||
<!-- GXA -->
|
||||
|
||||
<!ELEMENT admin-cpu ( #PCDATA ) >
|
||||
<!ELEMENT audit-file ( #PCDATA ) >
|
||||
<!ELEMENT bypass-board ( #PCDATA ) >
|
||||
<!ELEMENT cov-pool ( #PCDATA ) >
|
||||
<!ELEMENT cpu ( #PCDATA ) >
|
||||
<!ELEMENT disconnect-timeout-s ( #PCDATA ) >
|
||||
<!ELEMENT input-bufferpool ( #PCDATA ) >
|
||||
<!ELEMENT iov-pool ( #PCDATA ) >
|
||||
<!ELEMENT log-alt-file ( #PCDATA ) >
|
||||
<!ELEMENT log-level ( #PCDATA ) >
|
||||
<!ELEMENT log-name ( #PCDATA ) >
|
||||
<!ELEMENT log-shm-key ( #PCDATA ) >
|
||||
<!ELEMENT log-size ( #PCDATA ) >
|
||||
<!ELEMENT logging-append ( #PCDATA ) >
|
||||
<!ELEMENT logging-affinity ( #PCDATA ) >
|
||||
<!ELEMENT max-flush-time ( #PCDATA ) >
|
||||
<!ELEMENT redis-logging ( #PCDATA ) >
|
||||
<!ELEMENT redis-ip ( #PCDATA ) >
|
||||
<!ELEMENT redis-port ( #PCDATA ) >
|
||||
<!ELEMENT max-log-buffer-size ( #PCDATA ) >
|
||||
<!ELEMENT logging-file ( #PCDATA ) >
|
||||
<!ELEMENT max-orders ( #PCDATA ) >
|
||||
<!ELEMENT order-table-size ( #PCDATA ) >
|
||||
<!ELEMENT nb-worker ( #PCDATA )>
|
||||
<!ELEMENT orderid-type ( #PCDATA ) >
|
||||
<!ELEMENT output-bufferpool ( #PCDATA ) >
|
||||
<!ELEMENT pub-period ( #PCDATA ) >
|
||||
<!ELEMENT record-playback ( #PCDATA ) >
|
||||
<!ELEMENT playback-file ( #PCDATA ) >
|
||||
<!ELEMENT recovery-enabled ( #PCDATA ) >
|
||||
<!ELEMENT recovery-file ( #PCDATA ) >
|
||||
<!ELEMENT checkpoint-file ( #PCDATA ) >
|
||||
<!ELEMENT tcp-recovery-enabled ( #PCDATA ) >
|
||||
<!ELEMENT timeout-checkpoint ( #PCDATA ) >
|
||||
<!ELEMENT timeout-expire ( #PCDATA ) >
|
||||
<!ELEMENT shm-stat-key ( #PCDATA ) >
|
||||
<!ELEMENT socket-throughput ( #PCDATA ) >
|
||||
<!ELEMENT socket-timeout ( #PCDATA ) >
|
||||
<!ELEMENT udp-cnx-port ( #PCDATA ) >
|
||||
<!ELEMENT thread-pool-size ( #PCDATA ) >
|
||||
<!ELEMENT tunnel-ip ( #PCDATA ) >
|
||||
<!ELEMENT rules-file ( #PCDATA ) >
|
||||
<!ELEMENT scale-factor ( #PCDATA ) >
|
||||
<!ELEMENT sessions-per-thread ( #PCDATA ) >
|
||||
<!ELEMENT worker-start-port ( #PCDATA )>
|
||||
<!ELEMENT zmq-pub-string ( #PCDATA ) >
|
||||
<!ELEMENT zmq-router-string ( #PCDATA ) >
|
||||
<!ELEMENT large-difference-check ( #PCDATA ) >
|
||||
<!ELEMENT price-check ( #PCDATA ) >
|
||||
<!ELEMENT wide-spread-check ( #PCDATA ) >
|
||||
|
||||
<!-- End Of GXA -->
|
||||
|
||||
|
||||
|
||||
<!-- Streamer -->
|
||||
|
||||
<!ELEMENT streamer ( debuginput| tcpdumpinput| tcpdumpinputold| feedinput| itchinput| debugoutput| feedoutput| input| limit | output | output2 | nysedumpinput | file | slowoutput )* >
|
||||
<!ELEMENT input ( #PCDATA | input | type | filterport | filename | buffersize | messagesperpacket | droprate | group | perpacket| files | skipheader | verbosity | groups | loop | width | max | first | last)* >
|
||||
<!ELEMENT output ( #PCDATA | output | type | packetspersecond | limit | localaddress | remoteaddress | raw | outputs | droprate | verbosity | bytesfromstart | bytesfromend | delay )* >
|
||||
|
||||
<!ELEMENT output2 ( limit | type | bytesfromstart | bytesfromend )* >
|
||||
|
||||
<!ELEMENT nysedumpinput ( type| input )* >
|
||||
|
||||
<!ELEMENT files ( fname+ ) >
|
||||
<!ELEMENT fname ( #PCDATA ) >
|
||||
|
||||
|
||||
<!ELEMENT groups ( #PCDATA ) >
|
||||
<!ELEMENT loop ( #PCDATA ) >
|
||||
<!ELEMENT width ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT slowoutput ( type| packetspersecond| output )* >
|
||||
|
||||
<!ELEMENT skipheader ( #PCDATA ) >
|
||||
<!ELEMENT debuginput ( type| max )* >
|
||||
<!ELEMENT tcpdumpinput ( type| input )* >
|
||||
<!ELEMENT tcpdumpinputold ( type| input )* >
|
||||
<!ELEMENT feedinput ( type| input )* >
|
||||
<!ELEMENT feedoutput ( type| localaddress| remoteaddress )* >
|
||||
<!ELEMENT itchinput ( type| input )* >
|
||||
<!ELEMENT debugoutput ( type| bytesfromstart| bytesfromend )* >
|
||||
<!ELEMENT first ( #PCDATA ) >
|
||||
<!ELEMENT last ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT outputs ( pa1| pb1| pa2| pb2| pa3| pb3| p04| p16| p17 | t1 | t2 | t3 | t4 | t5)* >
|
||||
|
||||
<!ELEMENT max ( #PCDATA ) >
|
||||
<!ELEMENT perpacket ( #PCDATA ) >
|
||||
<!ELEMENT group ( #PCDATA ) >
|
||||
<!ELEMENT droprate ( #PCDATA ) >
|
||||
<!ELEMENT raw ( #PCDATA ) >
|
||||
<!ELEMENT messagesperpacket ( #PCDATA ) >
|
||||
<!ELEMENT bytesfromend ( #PCDATA ) >
|
||||
<!ELEMENT bytesfromstart ( #PCDATA ) >
|
||||
<!ELEMENT delay ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT type ( #PCDATA ) >
|
||||
<!ELEMENT filterport ( #PCDATA ) >
|
||||
<!ELEMENT filename ( #PCDATA ) >
|
||||
<!ELEMENT buffersize ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT packetspersecond ( #PCDATA ) >
|
||||
<!ELEMENT limit ( #PCDATA ) >
|
||||
<!ELEMENT localaddress ( interface )* >
|
||||
<!ELEMENT remoteaddress ( ip | port )* >
|
||||
|
||||
<!ELEMENT port ( #PCDATA ) >
|
||||
<!ELEMENT interface ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT p04 ( type| localaddress| remoteaddress )* >
|
||||
<!ELEMENT p16 ( type| localaddress| remoteaddress )* >
|
||||
<!ELEMENT p17 ( type| localaddress| remoteaddress )* >
|
||||
<!ELEMENT pa1 ( type| localaddress| remoteaddress )* >
|
||||
<!ELEMENT pa2 ( type| localaddress| remoteaddress )* >
|
||||
<!ELEMENT pa3 ( type| localaddress| remoteaddress )* >
|
||||
<!ELEMENT pb1 ( type| localaddress| remoteaddress )* >
|
||||
<!ELEMENT pb2 ( type| localaddress| remoteaddress )* >
|
||||
<!ELEMENT pb3 ( type| localaddress| remoteaddress )* >
|
||||
|
||||
<!ELEMENT t1 ( type | raw | localaddress | remoteaddress )* >
|
||||
<!ELEMENT t2 ( type | raw | localaddress | remoteaddress )* >
|
||||
<!ELEMENT t3 ( type | raw | localaddress | remoteaddress )* >
|
||||
<!ELEMENT t4 ( type | raw | localaddress | remoteaddress )* >
|
||||
<!ELEMENT t5 ( type | raw | localaddress | remoteaddress )* >
|
||||
|
||||
<!-- End Of Streamer -->
|
||||
|
||||
<!-- Instruments -->
|
||||
|
||||
<!ELEMENT instruments ( marcaxa | moprclx | instrument)* >
|
||||
<!ELEMENT moprclx ( #PCDATA ) >
|
||||
<!ELEMENT marcaxa ( #PCDATA ) >
|
||||
<!ELEMENT instrument ( #PCDATA ) >
|
||||
|
||||
<!-- End Of Instruments -->
|
||||
|
||||
<!-- TEST -->
|
||||
|
||||
<!ELEMENT test ( #PCDATA | logfile | symbol | price | buy-price | sell-price | timeinforce | size | live-testing | increment | throughput | actions | price-nominator | support-self-trade | price-decimals | segment-id )* >
|
||||
|
||||
<!ELEMENT price-decimals (#PCDATA) >
|
||||
<!ELEMENT buy-price (#PCDATA) >
|
||||
<!ELEMENT sell-price (#PCDATA) >
|
||||
<!ELEMENT throughput ( #PCDATA ) >
|
||||
<!ELEMENT actions ( action+ )* >
|
||||
<!ELEMENT action ( #PCDATA ) >
|
||||
<!ELEMENT support-self-trade (#PCDATA) >
|
||||
<!ELEMENT segment-id (#PCDATA) >
|
||||
|
||||
<!-- End Of TEST -->
|
||||
|
||||
<!-- DataFiles -->
|
||||
|
||||
<!ELEMENT datafiles ( ise| opra| cme| itch| bats | nyse )* >
|
||||
<!ELEMENT bats ( #PCDATA ) >
|
||||
<!ELEMENT cme ( #PCDATA ) >
|
||||
<!ELEMENT ise ( #PCDATA ) >
|
||||
<!ELEMENT opra ( #PCDATA ) >
|
||||
<!ELEMENT itch ( #PCDATA ) >
|
||||
<!ELEMENT nyse ( #PCDATA ) >
|
||||
|
||||
<!-- End Of DataFiles -->
|
||||
|
||||
<!-- AMDD-ICE -->
|
||||
|
||||
<!ELEMENT amdd-ice ( tcp-server )? >
|
||||
<!ELEMENT tcp-server ( address| port| username| password| debugpacket | packetfile)* >
|
||||
<!ELEMENT address ( #PCDATA ) >
|
||||
<!ELEMENT debugpacket ( #PCDATA ) >
|
||||
<!ELEMENT packetfile ( type | filename )* >
|
||||
|
||||
<!-- End Of AMDD-ICE -->
|
||||
|
||||
<!-- TIMEDIFF -->
|
||||
|
||||
<!ELEMENT timediff ( quick-mode| histogram-bins| histogram-min| histogram-max )* >
|
||||
<!ELEMENT quick-mode EMPTY >
|
||||
<!ELEMENT histogram-bins ( #PCDATA ) >
|
||||
<!ELEMENT histogram-max ( #PCDATA ) >
|
||||
<!ELEMENT histogram-min ( #PCDATA ) >
|
||||
|
||||
<!-- End Of TIMEDIFF-->
|
||||
<!-- AMDD-ITCH -->
|
||||
|
||||
<!ELEMENT amdd-itch ( bitfile | wfa-map | wfa-debug | arbitrage)* >
|
||||
<!ELEMENT wfa-map ( link )* >
|
||||
<!ELEMENT wfa-debug EMPTY >
|
||||
|
||||
<!-- End Of AMDD-ITCH -->
|
||||
|
||||
<!-- AMDD-CME & AMDD-CME2-->
|
||||
|
||||
<!ELEMENT amdd-cme2 ( arbitrage )? >
|
||||
<!ELEMENT amdd-cme ( arbitrage )? >
|
||||
<!ELEMENT arbitrage ( #PCDATA | passthru | crossmode | extended)* >
|
||||
<!ELEMENT passthru ( #PCDATA ) >
|
||||
<!ELEMENT crossmode ( #PCDATA ) >
|
||||
<!ELEMENT extended ( #PCDATA ) >
|
||||
|
||||
<!-- End Of AMDD-CME -->
|
||||
|
||||
<!-- AMDD-ISE -->
|
||||
|
||||
<!ELEMENT amdd-ise ( bitfile| multicast-groups-a| subscriber )* >
|
||||
<!ELEMENT multicast-groups-a ( group-info )* >
|
||||
|
||||
<!-- End Of AMDD-ISE -->
|
||||
|
||||
<!-- AMDD-CMED -->
|
||||
|
||||
<!ELEMENT amdd-cmed ( arbitrage )? >
|
||||
|
||||
<!-- End Of AMDD-CMED -->
|
||||
|
||||
<!-- AMDD-OPRA -->
|
||||
|
||||
<!ELEMENT amdd-opra ( bitfile| mcastgroups| subscriber )* >
|
||||
<!ELEMENT mcastgroups ( group-info* ) >
|
||||
<!ELEMENT subscriber ( ip| igmp-period| igmp-gap )* >
|
||||
<!ELEMENT igmp-gap ( #PCDATA ) >
|
||||
<!ELEMENT igmp-period ( #PCDATA ) >
|
||||
|
||||
<!-- End Of AMDD-OPRA -->
|
||||
|
||||
<!-- STREAMER-OPRA -->
|
||||
|
||||
<!ELEMENT streamer-opra ( ip-dst| udp-port-dst| interface| file-to-send )* >
|
||||
|
||||
<!ELEMENT file-to-send ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT ip-dst ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT udp-port-dst ( #PCDATA ) >
|
||||
|
||||
<!-- End Of STREAMER-OPRA -->
|
||||
|
||||
<!-- STREAMER-ISE -->
|
||||
|
||||
<!ELEMENT streamer-ise ( ip-dst| udp-port-dst| interface| file-to-send| maximum-packets )* >
|
||||
<!ELEMENT maximum-packets ( #PCDATA ) >
|
||||
|
||||
<!-- End Of STREAMER-ISE -->
|
||||
|
||||
<!-- air -->
|
||||
<!ELEMENT air-config-file (#PCDATA) >
|
||||
<!ELEMENT max-instruments ( #PCDATA ) >
|
||||
<!ELEMENT max-limit-databases ( #PCDATA ) >
|
||||
<!ELEMENT max-nb-markets ( #PCDATA ) >
|
||||
<!ELEMENT shkey-file ( #PCDATA ) >
|
||||
<!ELEMENT limit-granularity ( #PCDATA ) >
|
||||
<!ELEMENT shqsize ( #PCDATA ) >
|
||||
<!ELEMENT shm-dir ( #PCDATA ) >
|
||||
<!ELEMENT driver-cpu ( #PCDATA ) >
|
||||
<!ELEMENT air-config ( #PCDATA ) >
|
||||
<!ELEMENT air-vlan ( #PCDATA ) >
|
||||
<!ELEMENT air-gateway ( #PCDATA ) >
|
||||
<!ELEMENT max-pending ( #PCDATA ) >
|
||||
<!ELEMENT heartbeat-time ( #PCDATA ) >
|
||||
<!ELEMENT standalone ( #PCDATA ) >
|
||||
<!ELEMENT plugin ( #PCDATA ) >
|
||||
<!ELEMENT driver-logfile ( #PCDATA ) >
|
||||
<!ELEMENT logging-mode ( #PCDATA ) >
|
||||
<!ELEMENT arca-fill-format ( #PCDATA ) >
|
||||
<!ELEMENT session-config-path ( #PCDATA ) >
|
||||
<!ELEMENT logon-timeout ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT heartbeat-send-interval ( #PCDATA ) >
|
||||
<!ELEMENT heartbeat-receive-timeout ( #PCDATA ) >
|
||||
<!ELEMENT limit-provider ( logfile | port | host | credentials | backoff-period | heartbeat-send-interval | heartbeat-receive-timeout | interface )* >
|
||||
<!ELEMENT group-info ( #PCDATA | limit-provider )* >
|
||||
<!ELEMENT limit-provider-groups (group-info+) >
|
||||
<!ELEMENT air-server ( verbosity | logfile | cpu | max-pending | heartbeat-time | limit-provider-groups | plugin )* >
|
||||
|
||||
<!-- end of air -->
|
||||
|
||||
|
||||
<!-- begin of gxa-lite -->
|
||||
|
||||
<!ELEMENT gxa-lite (libraries) >
|
||||
<!ELEMENT libraries (paths, library*) >
|
||||
<!ELEMENT paths (path)* >
|
||||
<!ELEMENT path (#PCDATA) >
|
||||
<!ELEMENT library (name, entry, file) >
|
||||
<!ELEMENT name (#PCDATA) >
|
||||
<!ELEMENT entry (#PCDATA) >
|
||||
<!ELEMENT file (#PCDATA) >
|
||||
|
||||
<!-- end of gxa-lite -->
|
||||
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
<!DOCTYPE config SYSTEM "${CELOXICA_DTD_PATH:=./}/config.dtd">
|
||||
<!--DOCTYPE config SYSTEM "${CELOXICA_DTD_PATH:=/opt/celoxica/share/etc}/config.dtd"-->
|
||||
<config>
|
||||
<gmac>
|
||||
<!-- verbosity -->
|
||||
<verbosity> INFO </verbosity>
|
||||
<logfile> /tmp/gmac.log</logfile>
|
||||
|
||||
<!-- reorder/recovery buffer pool -->
|
||||
<bufferpool> 1048576 4 </bufferpool>
|
||||
|
||||
<!-- recovery settings -->
|
||||
<recovery> off </recovery>
|
||||
|
||||
|
||||
|
||||
<!-- specifies, if GMAC should send subscription IGMP packets. -->
|
||||
<subscription> on </subscription>
|
||||
|
||||
|
||||
|
||||
<max-hw-waiting-packets> 50000 </max-hw-waiting-packets>
|
||||
|
||||
<markets>
|
||||
<!-- market ID = Market name -->
|
||||
<market> 0 CME_BINARY
|
||||
<v3> on </v3>
|
||||
<time-zone> -6 </time-zone>
|
||||
|
||||
<!-- Activate extensions -->
|
||||
<extension-messages>1</extension-messages>
|
||||
|
||||
<!-- Reorder settings: max number of packets in reorder buffer per channel + timeout -->
|
||||
<!-- Note that reordering is disabled by default on this plugin. Uncomment below to enable -->
|
||||
<!--max-channel-buffer> 16 </max-channel-buffer-->
|
||||
<!--max-buffer-timeout-ns> 30000 </max-buffer-timeout-ns-->
|
||||
|
||||
<!-- Refer to ftp://ftp.cmegroup.com/SBEFix/Production/Configuration/config.xml for market data configuration details -->
|
||||
<!-- The "local channelIDs" are set to the cme "channel id" for convenience -->
|
||||
|
||||
<!-- Instrument replay channels, queue 0 -->
|
||||
<referentials>
|
||||
<channel> 310 0 clxng_shared clx0 224.0.31.43:14310 - - - on </channel> <!-- 310NA instrument replay -->
|
||||
<channel> 311 0 clxng_shared clx0 224.0.31.44:14311 - - - on </channel> <!-- 311NA instrument replay -->
|
||||
</referentials>
|
||||
|
||||
<!-- Incremental channels, queue 1 -->
|
||||
<channels>
|
||||
<channel> 310 1 clxng_shared clx0 224.0.31.1:14310 - - - on </channel> <!-- 310IA incremental -->
|
||||
<!--channel> 310B 1 clxng_shared clx1 224.0.32.1:15310 - - - on </channel--> <!-- 310IB incremental -->
|
||||
<channel> 311 1 clxng_shared clx0 224.0.31.2:14311 - - - on </channel> <!-- 311IA incremental -->
|
||||
<!--channel> 311B 1 clxng_shared clx1 224.0.32.2:15311 - - - on </channel--> <!-- 311IB incremental -->
|
||||
</channels>
|
||||
|
||||
<!-- Snapshot channels -->
|
||||
<snapshot-enabled> yes </snapshot-enabled>
|
||||
<snapshots>
|
||||
<channel> 310 0 clxng_shared clx0 224.0.31.22:14310 - - - off </channel> <!-- 310SA incremental -->
|
||||
<channel> 311 0 clxng_shared clx0 224.0.31.23:14311 - - - off </channel> <!-- 311SA incremental -->
|
||||
</snapshots>
|
||||
</market>
|
||||
</markets>
|
||||
</gmac>
|
||||
</config>
|
||||
@@ -0,0 +1,63 @@
|
||||
<!DOCTYPE config SYSTEM "${CELOXICA_DTD_PATH:=/opt/celoxica/share/etc}/config.dtd">
|
||||
<config>
|
||||
<gmac>
|
||||
<!-- verbosity -->
|
||||
<verbosity> INFO </verbosity>
|
||||
<logfile> /tmp/gmac.log</logfile>
|
||||
|
||||
<!-- reorder/recovery buffer pool -->
|
||||
<bufferpool> 1048576 4 </bufferpool>
|
||||
|
||||
<!-- recovery settings -->
|
||||
<recovery> off </recovery>
|
||||
|
||||
|
||||
|
||||
<!-- specifies, if GMAC should send subscription IGMP packets. -->
|
||||
<subscription> on </subscription>
|
||||
|
||||
|
||||
|
||||
<max-hw-waiting-packets> 131071 </max-hw-waiting-packets>
|
||||
|
||||
<markets>
|
||||
<!-- market ID = Market name -->
|
||||
<market> 0 CME_BINARY
|
||||
<v3> on </v3>
|
||||
<time-zone> -6 </time-zone>
|
||||
|
||||
<!-- Activate extensions -->
|
||||
<extension-messages>1</extension-messages>
|
||||
|
||||
<!-- Reorder settings: max number of packets in reorder buffer per channel + timeout -->
|
||||
<!-- Note that reordering is disabled by default on this plugin. Uncomment below to enable -->
|
||||
<!--max-channel-buffer> 16 </max-channel-buffer-->
|
||||
<!--max-buffer-timeout-ns> 30000 </max-buffer-timeout-ns-->
|
||||
|
||||
<!-- Refer to ftp://ftp.cmegroup.com/SBEFix/Production/Configuration/config.xml for market data configuration details -->
|
||||
<!-- The "local channelIDs" are set to the cme "channel id" for convenience -->
|
||||
|
||||
<!-- Instrument replay channels -->
|
||||
<referentials>
|
||||
<channel> 310 0 clxng clx0 224.0.31.43:14310 - - - on </channel> <!-- 310NA instrument replay -->
|
||||
<channel> 311 0 clxng clx0 224.0.31.44:14311 - - - on </channel> <!-- 311NA instrument replay -->
|
||||
</referentials>
|
||||
|
||||
<!-- Incremental channels -->
|
||||
<channels>
|
||||
<channel> 310A 0 clxng clx0 224.0.31.1:14310 - - - on </channel> <!-- 310IA incremental -->
|
||||
<channel> 310B 0 clxng clx1 224.0.32.1:15310 - - - on </channel> <!-- 310IB incremental -->
|
||||
<channel> 311A 0 clxng clx0 224.0.31.2:14311 - - - on </channel> <!-- 311IA incremental -->
|
||||
<channel> 311B 0 clxng clx1 224.0.32.2:15311 - - - on </channel> <!-- 311IB incremental -->
|
||||
</channels>
|
||||
|
||||
<!-- Snapshot channels -->
|
||||
<snapshot-enabled> yes </snapshot-enabled>
|
||||
<snapshots>
|
||||
<channel> 310 0 clxng clx0 224.0.31.22:14310 - - - off </channel> <!-- 310SA incremental -->
|
||||
<channel> 311 0 clxng clx0 224.0.31.23:14311 - - - off </channel> <!-- 311SA incremental -->
|
||||
</snapshots>
|
||||
</market>
|
||||
</markets>
|
||||
</gmac>
|
||||
</config>
|
||||
+25
-18
@@ -1,22 +1,29 @@
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libbase.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libutils.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libfix_lib.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libclxlog.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libade_version.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libade.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libclx.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libgmac_version.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libgmac.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libcputimestamp.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libclxconfig.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libconfigfile.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libac.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/librc.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/liblldt.so")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libregister.so")
|
||||
|
||||
file(COPY ${CELOXICA_LIB} DESTINATION ${CMAKE_BINARY_DIR}/src/server/sparkd)
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libbase.so.5")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libutils.so.5")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libfix_lib.so.5")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libclxlog.so.5")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libade_version.so.5")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libade.so.5")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libclx.so.5")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libgmac_version.so.3")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libgmac.so.3")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libcputimestamp.so.5")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libclxconfig.so.1")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libconfigfile.so.5")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libac.so.5")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/librc.so.5")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/liblldt.so.5")
|
||||
LIST(APPEND CELOXICA_LIB "${SPARK_LIB}/celoxica/libregister.so.5")
|
||||
|
||||
FOREACH(f ${CELOXICA_LIB})
|
||||
get_filename_component(ff ${f} NAME)
|
||||
configure_file(${f} ${CMAKE_BINARY_DIR}/src/server/sparkd/${ff} COPYONLY)
|
||||
ENDFOREACH()
|
||||
|
||||
configure_file(md/platforms/celoxica/gmac.cfg ${CMAKE_BINARY_DIR}/src/server/sparkd/gmac.cfg COPYONLY)
|
||||
configure_file(md/platforms/celoxica/config.dtd ${CMAKE_BINARY_DIR}/src/server/sparkd/config.dtd COPYONLY)
|
||||
|
||||
#to support shared objects
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--disable-new-dtags -Wl,-rpath,'.:$ORIGIN:$$ORIGIN' -Wl,-z,origin")
|
||||
Reference in new issue
Block a user