public void TestDeltas() { var templateSource = new StreamReader("CME/templates.xml"); var templateLoader = new XMLMessageTemplateLoader { LoadTemplateIdFromAuxId = true }; templateLoader.Load(templateSource.BaseStream); var is1 = new StreamReader("CME/messages.fast"); var mis = new MessageInputStream(is1.BaseStream); mis.SetTemplateRegistry(templateLoader.TemplateRegistry); Message md = mis.ReadMessage(); Assert.AreEqual(-5025.0, md.GetSequence("MDEntries")[0].GetDouble("NetChgPrevDay"), .1); }
public virtual void Start() { bKeepRunning = true; XMLMessageTemplateLoader loader = new XMLMessageTemplateLoader(); registry = UmdfUtils.loadTemplates(templateFile); thUdpPacketProcessor = new Thread(new ThreadStart(udpPacketProcessor)); thUdpPacketProcessor.Name = "threadUdpPacketProcessor" + channelID; thUdpPacketProcessor.Start(); thUmdfPacketAssembler = new Thread(new ThreadStart(umdfPacketAssembler)); thUmdfPacketAssembler.Name = "threadUmdfPacketAssembler" + channelID; thUmdfPacketAssembler.Start(); thUmdfPacketProcessor = new Thread(new ThreadStart(umdfPacketProcessor)); thUmdfPacketProcessor.Name = "threadUmdfPacketProcessor-" + channelID; thUmdfPacketProcessor.Start(); thUmdfMessageProcessor = new Thread(new ThreadStart(umdfMessageProcessor)); thUmdfMessageProcessor.Name = "threadUmdfMessageProcessor-" + channelID; thUmdfMessageProcessor.Start(); }
public FixInitiator(MarketIncrementalProcessor mktIncProc, ChannelUMDFConfig channelUmdfConfig, string templateFile, Queue <UdpPacket> qUdpPkt, Object replayLockObject) { logger = LogManager.GetLogger("FixInitiator-" + channelUmdfConfig.ChannelID); MDSUtils.AddAppender("FixInitiator-" + channelUmdfConfig.ChannelID, logger.Logger); XMLMessageTemplateLoader loader = new XMLMessageTemplateLoader(); registry = UmdfUtils.loadTemplates(templateFile); context = new Context(); context.TemplateRegistry = registry; _mktIncProc = mktIncProc; _channelUmdfConfig = channelUmdfConfig; if (!listaChannelQueues.ContainsKey(channelUmdfConfig.ChannelID)) { listaChannelQueues.Add(channelUmdfConfig.ChannelID, new ListChannelQueues(qUdpPkt, replayLockObject)); } logger.Info("Start(): iniciando sessao FIX..."); try { // Cria sessao FIX _session = new QuickFix.SessionID( _channelUmdfConfig.TCPConfig.BeginString, _channelUmdfConfig.TCPReplayConfig.SenderCompID, _channelUmdfConfig.TCPReplayConfig.SubID, _channelUmdfConfig.TCPReplayConfig.TargetCompID, _channelUmdfConfig.TCPReplayConfig.SubID); // Cria dicionario da configuracao QuickFix.Dictionary mainDic = new QuickFix.Dictionary(); mainDic.SetLong("SocketConnectPort", _channelUmdfConfig.TCPReplayConfig.SocketConnectPort); mainDic.SetLong("HeartBtInt", _channelUmdfConfig.TCPConfig.HeartBtInt); mainDic.SetLong("ReconnectInterval", _channelUmdfConfig.TCPConfig.ReconnectInterval); mainDic.SetBool("ResetOnLogon", _channelUmdfConfig.TCPConfig.ResetOnLogon); mainDic.SetBool("ResetOnLogout", _channelUmdfConfig.TCPConfig.ResetOnLogout); mainDic.SetBool("ResetOnDisconnect", _channelUmdfConfig.TCPConfig.ResetOnDisconnect); mainDic.SetBool("PersistMessages", _channelUmdfConfig.TCPConfig.PersistMessages); mainDic.SetString("ConnectionType", _channelUmdfConfig.TCPConfig.ConnectionType); mainDic.SetString("SocketConnectHost", _channelUmdfConfig.TCPReplayConfig.SocketConnectHost); mainDic.SetString("FileStorePath", _channelUmdfConfig.TCPConfig.FileStorePath); mainDic.SetString("FileLogPath", _channelUmdfConfig.TCPConfig.FileLogPath); mainDic.SetString("StartTime", _channelUmdfConfig.TCPReplayConfig.StartTime); mainDic.SetString("EndTime", _channelUmdfConfig.TCPReplayConfig.EndTime); QuickFix.Dictionary sessDic = new QuickFix.Dictionary(); sessDic.SetString("BeginString", _channelUmdfConfig.TCPConfig.BeginString); sessDic.SetString("SenderCompID", _channelUmdfConfig.TCPReplayConfig.SenderCompID); sessDic.SetString("SenderSubID", _channelUmdfConfig.TCPReplayConfig.SubID); sessDic.SetString("TargetCompID", _channelUmdfConfig.TCPReplayConfig.TargetCompID); sessDic.SetString("TargetSubID", _channelUmdfConfig.TCPReplayConfig.SubID); sessDic.SetString("DataDictionary", _channelUmdfConfig.TCPConfig.DataDictionary); sessDic.SetBool("UseDataDictionary", true); // Configure the session settings QuickFix.SessionSettings settings = new QuickFix.SessionSettings(); settings.Set(mainDic); settings.Set(_session, sessDic); MemoryStoreFactory store = new MemoryStoreFactory(); FileLogFactory log = new FileLogFactory(settings); IMessageFactory message = new DefaultMessageFactory(); // Cria o socket _initiator = new QuickFix.Transport.SocketInitiator(this, store, settings, log, message); _initiator.Start(); } catch (Exception ex) { logger.Error("Start():" + ex.Message, ex); } logger.Info("Start(): Sessao FIX iniciado!"); }
public FixServerAcceptor( TCPReplayConfig tcpReplayConfig, Dictionary <string, SessionID> dctSessionsFixClients, Dictionary <string, SessionID> dctSessionsFixChannels) { _tcpReplayConfig = tcpReplayConfig; _dctSessionsFixClients = dctSessionsFixClients; _dctSessionsFixChannels = dctSessionsFixChannels; logger = LogManager.GetLogger("FixServerAcceptor"); MDSUtils.AddAppender("FixServerAcceptor", logger.Logger); XMLMessageTemplateLoader loader = new XMLMessageTemplateLoader(); registry = UmdfUtils.loadTemplates(tcpReplayConfig.TemplateFile); context = new Context(); context.TemplateRegistry = registry; try { // Cria dicionario da configuracao QuickFix.Dictionary mainDic = new QuickFix.Dictionary(); mainDic.SetLong("SocketAcceptPort", tcpReplayConfig.SocketAcceptPort); mainDic.SetBool("ResetOnLogon", tcpReplayConfig.ResetOnLogon); mainDic.SetBool("ResetOnDisconnect", tcpReplayConfig.ResetOnDisconnect); mainDic.SetBool("PersistMessages", tcpReplayConfig.PersistMessages); mainDic.SetString("ConnectionType", tcpReplayConfig.ConnectionType); mainDic.SetString("FileStorePath", tcpReplayConfig.FileStorePath); mainDic.SetString("FileLogPath", tcpReplayConfig.FileLogPath); mainDic.SetString("StartTime", tcpReplayConfig.StartTime); mainDic.SetString("EndTime", tcpReplayConfig.EndTime); QuickFix.Dictionary sessDic = new QuickFix.Dictionary(); sessDic.SetString("BeginString", tcpReplayConfig.BeginString); sessDic.SetString("SenderCompID", tcpReplayConfig.SenderCompID); sessDic.SetString("TargetCompID", tcpReplayConfig.TargetCompID); sessDic.SetString("DataDictionary", tcpReplayConfig.DataDictionary); sessDic.SetBool("UseDataDictionary", true); // Configure the session settings QuickFix.SessionSettings settings = new QuickFix.SessionSettings(); settings.Set(mainDic); MemoryStoreFactory store = new MemoryStoreFactory(); FileLogFactory log = new FileLogFactory(settings); IMessageFactory message = new DefaultMessageFactory(); IEnumerable <int> rangeSenderSubID = Enumerable.Range( tcpReplayConfig.SubIDStartSeq, tcpReplayConfig.SubIDEndSeq); foreach (int item in rangeSenderSubID) { string subID = tcpReplayConfig.SubIDPrefix + item.ToString("D3"); // Cria sessao FIX SessionID sessionID = new QuickFix.SessionID( tcpReplayConfig.BeginString, tcpReplayConfig.SenderCompID, subID, tcpReplayConfig.TargetCompID, subID); sessDic.SetString("SenderSubID", subID); sessDic.SetString("TargetSubID", subID); settings.Set(sessionID, sessDic); } logger.InfoFormat("Start(): iniciando FIX ACCEPTOR na porta {0}...", tcpReplayConfig.SocketAcceptPort); _acceptor = new ThreadedSocketAcceptor(this, store, settings, log, message); _acceptor.Start(); } catch (Exception ex) { logger.Error("Start():" + ex.Message, ex); } logger.Info("Start(): Sessao FIX iniciada!"); }
public FixServerInitiator( string channelsID, TCPReplayConfig tcpReplayConfig, Dictionary <string, SessionID> dctSessionsFixClients, Dictionary <string, SessionID> dctSessionsFixChannels) { _tcpReplayConfig = tcpReplayConfig; _dctSessionsFixClients = dctSessionsFixClients; _dctSessionsFixChannels = dctSessionsFixChannels; logger = LogManager.GetLogger("FixServerInitiator-" + tcpReplayConfig.ChannelID); MDSUtils.AddAppender("FixServerInitiator-" + tcpReplayConfig.ChannelID, logger.Logger); XMLMessageTemplateLoader loader = new XMLMessageTemplateLoader(); registry = UmdfUtils.loadTemplates(tcpReplayConfig.TemplateFile); context = new Context(); context.TemplateRegistry = registry; try { // Cria dicionario da configuracao QuickFix.Dictionary mainDic = new QuickFix.Dictionary(); mainDic.SetString("SocketConnectHost", tcpReplayConfig.SocketConnectHost); mainDic.SetLong("SocketConnectPort", tcpReplayConfig.SocketConnectPort); if (!String.IsNullOrEmpty(tcpReplayConfig.SocketConnectHost1)) { mainDic.SetString("SocketConnectHost1", tcpReplayConfig.SocketConnectHost1); mainDic.SetLong("SocketConnectPort1", tcpReplayConfig.SocketConnectPort1); } mainDic.SetLong("HeartBtInt", tcpReplayConfig.HeartBtInt); mainDic.SetLong("ReconnectInterval", tcpReplayConfig.ReconnectInterval); mainDic.SetBool("ResetOnLogon", tcpReplayConfig.ResetOnLogon); mainDic.SetBool("PersistMessages", tcpReplayConfig.PersistMessages); mainDic.SetString("ConnectionType", tcpReplayConfig.ConnectionType); mainDic.SetString("FileStorePath", tcpReplayConfig.FileStorePath); mainDic.SetString("FileLogPath", tcpReplayConfig.FileLogPath); mainDic.SetString("StartTime", tcpReplayConfig.StartTime); mainDic.SetString("EndTime", tcpReplayConfig.EndTime); QuickFix.Dictionary sessDic = new QuickFix.Dictionary(); sessDic.SetString("BeginString", tcpReplayConfig.BeginString); sessDic.SetString("SenderCompID", tcpReplayConfig.SenderCompID); sessDic.SetString("TargetCompID", tcpReplayConfig.TargetCompID); sessDic.SetString("DataDictionary", tcpReplayConfig.DataDictionary); sessDic.SetBool("UseDataDictionary", true); // Configure the session settings QuickFix.SessionSettings settings = new QuickFix.SessionSettings(); settings.Set(mainDic); MemoryStoreFactory store = new MemoryStoreFactory(); FileLogFactory log = new FileLogFactory(settings); IMessageFactory message = new DefaultMessageFactory(); // Cria sessao FIX _sessionID = new QuickFix.SessionID( tcpReplayConfig.BeginString, tcpReplayConfig.SenderCompID, tcpReplayConfig.TargetCompID); settings.Set(_sessionID, sessDic); string[] quebraChannelsID = channelsID.Split(",".ToCharArray()); foreach (string channel in quebraChannelsID) { dctSessionsFixChannels.Add(channel, _sessionID); } logger.InfoFormat("Start(): iniciando FIX com sessionID[{0}]...", _sessionID.ToString()); _initiator = new QuickFix.Transport.SocketInitiator(this, store, settings, log, message); _initiator.Start(); } catch (Exception ex) { logger.Error("Start():" + ex.Message, ex); } logger.Info("Start(): Sessao FIX iniciada!"); }
protected static MessageTemplate Template(String templateXml) { MessageTemplate[] templates = new XMLMessageTemplateLoader().Load (new MemoryStream(System.Text.Encoding.ASCII.GetBytes(templateXml))); return(templates[0]); }