#include #include #include "../../shared/CommandDispatcher.h" #include "../../shared/NewConnections.h" #include "../../shared/InputFramework.h" #include "../../shared/GlobalConfigFile.h" #include "../../shared/ReplyToClient.h" #include "../../shared/Ping.h" #include "../data_framework/SimpleMarketData.h" #include "../data_framework/ShortTermCandles.h" #include "DataNodeThread.h" #include "UserInfo.h" #include "../MainLoop.h" class TiqMainLoop : public MainLoop { private: DataNodeThread *_dataNodeThread; protected: void start() { _dataNodeThread->initAlerts(); } public: void setDataNodeThread(DataNodeThread *dataNodeThread) { _dataNodeThread = dataNodeThread; } TiqMainLoop() : _dataNodeThread(NULL) { } }; int main(int argc, char**argv) { if (!addConfigItemsFromCommandLine(argv + 1)) return 1; configItemsComplete(); TiqMainLoop mainLoop; //initialize...(); //initializeSpryWareTos(); //initializeSpryWareL1(); //initProxyData(); -- this is done in the data node thread. initializeSimpleMarketData(); initializeShortTermCandles(); initPing(); DataNodeThread dataNodeThread; mainLoop.setDataNodeThread(&dataNodeThread); // Listen for commands. This is for debugging and possibly configuration. initReplyToClient(); UserInfoThread::init(); CommandDispatcher *commandDispatcher = CommandDispatcher::getInstance(); commandDispatcher->requireLogin(); InputListener listener(commandDispatcher->getInput(), commandDispatcher->getInputCallbackId()); const int listenPort = strtolDefault(getConfigItem("listen_port", "9339"), -1); if (listenPort <= 0) { std::cerr<<"Invalid listen port \"" <