void StartEngine(bool initiator) { TestApplication application = new TestApplication(LogonCallback, LogoffCallback); IMessageStoreFactory storeFactory = new MemoryStoreFactory(); SessionSettings settings = new SessionSettings(); Dictionary defaults = new Dictionary(); defaults.SetString(QuickFix.SessionSettings.FILE_LOG_PATH, _logPath); // Put IP endpoint settings into default section to verify that that defaults get merged into // session-specific settings not only for static sessions, but also for dynamic ones defaults.SetString(SessionSettings.SOCKET_CONNECT_HOST, Host); defaults.SetString(SessionSettings.SOCKET_CONNECT_PORT, ConnectPort.ToString()); defaults.SetString(SessionSettings.SOCKET_ACCEPT_HOST, Host); defaults.SetString(SessionSettings.SOCKET_ACCEPT_PORT, AcceptPort.ToString()); settings.Set(defaults); ILogFactory logFactory = new FileLogFactory(settings); if (initiator) { defaults.SetString(SessionSettings.RECONNECT_INTERVAL, "1"); settings.Set(CreateSessionID(StaticInitiatorCompID), CreateSessionConfig(StaticInitiatorCompID, true)); _initiator = new SocketInitiator(application, storeFactory, settings, logFactory); _initiator.Start(); } else { settings.Set(CreateSessionID(StaticAcceptorCompID), CreateSessionConfig(StaticAcceptorCompID, false)); _acceptor = new ThreadedSocketAcceptor(application, storeFactory, settings, logFactory); _acceptor.Start(); } }
public FixClient(string targetCompId = Const.TargetCompId, string senderCompId = Const.SenderCompId, string uri = Const.Uri, int port = Const.Port) { var s = new SessionSetting { TargetCompID = targetCompId, SenderCompID = senderCompId, FixConfiguration = new[] { "[DEFAULT]", "ResetOnLogon=Y", "FileStorePath=client", "ConnectionType=initiator", "ReconnectInterval=60", "BeginString=FIX.4.4", @"DataDictionary=ClientFIX44.xml", "SSLEnable=N", @"SSLProtocols=Tls", "SSLValidateCertificates=N", $"SocketConnectPort={port}", "StartTime=00:00:00", "EndTime=00:00:00", "HeartBtInt=10", "LogonTimeout=120", $"SocketConnectHost={uri}", "[SESSION]", } }; _log = new LogToConsole(); var settings = new SessionSettings(s.GetFixConfigAsReader()); var storeFactory = new MemoryStoreFactory(); var logFactory = new LykkeLogFactory(_log, false, false, false); _socketInitiator = new SocketInitiator(this, storeFactory, settings, logFactory); }
public void SetUp() { application = new ApplicationImpl(); SessionSettings settings = new SessionSettings("c:\\development\\quickfix\\test\\cfg\\at_client.cfg"); MessageStoreFactory messageStoreFactory = new MemoryStoreFactory(); QuickFix42.MessageFactory messageFactory = new QuickFix42.MessageFactory(); initiator = new SocketInitiator (application, messageStoreFactory, settings, messageFactory); server = new Process(); server.StartInfo.FileName = "c:\\development\\quickfix\\test\\debug\\at\\at"; server.StartInfo.Arguments = "-f c:\\development\\quickfix\\test\\cfg\\at.cfg"; server.Start(); Thread quickFixThread = new Thread(RunThread); quickFixThread.Start(); for (int i = 0; i < 50; ++i) { if (application.isLoggedOn()) { break; } Thread.Sleep(1000); } if (!application.isLoggedOn()) { throw new Exception(); } }
public static void Run(bool isLive = false) { SessionSettings settings = new SessionSettings(YJYGlobal.GetConfigurationSetting("ayondoFixFeedCfgFilePath")); myApp = new AyondoFixFeedApp(YJYGlobal.GetConfigurationSetting("ayondoFixFeedUsername"), YJYGlobal.GetConfigurationSetting("ayondoFixFeedPassword")); IMessageStoreFactory storeFactory = new MemoryStoreFactory(); //new FileStoreFactory(settings); //ILogFactory logFactory = new FileLogFactory(settings); SocketInitiator initiator = new SocketInitiator(myApp, storeFactory, settings, null //logFactory ); //var redisClient = YJYGlobal.BasicRedisClientManager.GetClient(); //var redisProdDefClient = redisClient.As<ProdDef>(); //var redisTickClient = redisClient.As<Tick>(); initiator.Start(); // This will *ONLY* bind to localhost, if you want to bind to all addresses // use http://*:8080 to bind to all addresses. // See http://msdn.microsoft.com/library/system.net.httplistener.aspx // for more information. string url = "http://*:39680"; var start = WebApp.Start(url); Trace.Listeners.Remove("HostingTraceListener");//remove the trace listener that OWIN added Console.WriteLine("Server running on {0}", url); //Console.ReadLine(); //run tasks in NEW threads _timerProdDefs = new Timer(SaveProdDefs, null, _intervalProdDefs, TimeSpan.FromMilliseconds(-1)); _timerProdDefRequest = new Timer(SendProdDefRequest, null, _intervalProdDefRequest, TimeSpan.FromMilliseconds(-1)); _timerQuotes = new Timer(SaveQuotes, null, _intervalQuotes, TimeSpan.FromMilliseconds(-1)); _timerRawTicks = new Timer(SaveRawTicks, null, _intervalRawTicks, TimeSpan.FromMilliseconds(-1)); _timerTicks = new Timer(SaveTicks, null, _intervalTicks, TimeSpan.FromMilliseconds(-1)); _timerKLines = new Timer(SaveKLine, null, _intervalKLine, TimeSpan.FromMilliseconds(-1)); _timerQuoteBroadcast = new Timer(QuoteBroadcast, null, _intervalQuoteBroadcast, TimeSpan.FromMilliseconds(-1)); while (true) { //System.Console.WriteLine("o hai"); System.Threading.Thread.Sleep(1000); } //initiator.Stop(); }
static void Main(string[] args) { if (args.Length != 1) { System.Console.WriteLine("usage: AcceptanceTest CONFIG_FILENAME"); System.Environment.Exit(2); } ILog debugLog = new ConsoleLog();//new FileLog("log", new SessionID("AT", "Application", "Debug")); ThreadedSocketAcceptor acceptor = null; try { ATApplication testApp = new ATApplication(debugLog); testApp.StopMeEvent += new System.Action(delegate () { _stopMe = true; }); SessionSettings settings = new SessionSettings(args[0]); IMessageStoreFactory storeFactory = new MemoryStoreFactory(); ILogFactory logFactory = null; //if (settings.Get().Has("Verbose") && settings.Get().GetBool("Verbose")) // logF = new FileLogFactory(settings); acceptor = new ThreadedSocketAcceptor(testApp, storeFactory, settings, logFactory); acceptor.Start(); while (true) { System.Threading.Thread.Sleep(1000); // for tests of logout if (_stopMe) { // this doesn't seem to work // after stop, it doesn't seem to start up again /* acceptor.Stop(); Thread.Sleep(5 * 1000); _stopMe = false; acceptor.Start(); */ } } } catch (System.Exception e) { debugLog.OnEvent(e.ToString()); } finally { if (acceptor != null) acceptor.Stop(); } }
public void ValidConfiguration() { IApplication app = new NullApplication(); IMessageStoreFactory storeFactory = new MemoryStoreFactory(); SessionFactory factory = new SessionFactory(app, storeFactory); SessionID sessionID = new SessionID("FIX.4.2", "SENDER", "TARGET"); Dictionary settings = new Dictionary(); settings.SetString(SessionSettings.CONNECTION_TYPE, "initiator"); settings.SetString(SessionSettings.USE_DATA_DICTIONARY, "N"); settings.SetString(SessionSettings.START_TIME, "12:00:00"); settings.SetString(SessionSettings.END_TIME, "12:00:00"); settings.SetString(SessionSettings.HEARTBTINT, "30"); Assert.DoesNotThrow(delegate { factory.Create(sessionID, settings); }); }
public void TestTimeStampPrecisionSettings() { IApplication app = new NullApplication(); IMessageStoreFactory storeFactory = new MemoryStoreFactory(); SessionFactory factory = new SessionFactory(app, storeFactory); SessionID sessionID = new SessionID("FIX.4.2", "SENDER", "TARGET"); Dictionary settings = new Dictionary(); settings.SetString(SessionSettings.CONNECTION_TYPE, "initiator"); settings.SetString(SessionSettings.USE_DATA_DICTIONARY, "N"); settings.SetString(SessionSettings.HEARTBTINT, "30"); settings.SetString(SessionSettings.START_TIME, "12:00:00"); settings.SetString(SessionSettings.END_TIME, "12:00:00"); settings.SetString(SessionSettings.TIMESTAMP_PRECISION, "Microsecond"); Session session = factory.Create(sessionID, settings); Assert.That(session.TimeStampPrecision == QuickFix.Fields.Converters.TimeStampPrecision.Microsecond); settings.SetString(SessionSettings.TIMESTAMP_PRECISION, "Micro"); session = factory.Create(sessionID, settings); Assert.That(session.TimeStampPrecision == QuickFix.Fields.Converters.TimeStampPrecision.Microsecond); settings.SetString(SessionSettings.TIMESTAMP_PRECISION, "Millisecond"); session = factory.Create(sessionID, settings); Assert.That(session.TimeStampPrecision == QuickFix.Fields.Converters.TimeStampPrecision.Millisecond); settings.SetString(SessionSettings.TIMESTAMP_PRECISION, "Milli"); session = factory.Create(sessionID, settings); Assert.That(session.TimeStampPrecision == QuickFix.Fields.Converters.TimeStampPrecision.Millisecond); settings.SetString(SessionSettings.TIMESTAMP_PRECISION, "Nanosecond"); session = factory.Create(sessionID, settings); Assert.That(session.TimeStampPrecision == QuickFix.Fields.Converters.TimeStampPrecision.Nanosecond); settings.SetString(SessionSettings.TIMESTAMP_PRECISION, "Nano"); session = factory.Create(sessionID, settings); Assert.That(session.TimeStampPrecision == QuickFix.Fields.Converters.TimeStampPrecision.Nanosecond); settings.SetString(SessionSettings.TIMESTAMP_PRECISION, "Second"); session = factory.Create(sessionID, settings); Assert.That(session.TimeStampPrecision == QuickFix.Fields.Converters.TimeStampPrecision.Second); }
public void TestExtendedSettings() { IApplication app = new NullApplication(); IMessageStoreFactory storeFactory = new MemoryStoreFactory(); SessionFactory factory = new SessionFactory(app, storeFactory); SessionID sessionID = new SessionID("FIX.4.2", "SENDER", "TARGET"); Dictionary settings = new Dictionary(); settings.SetString(SessionSettings.USE_DATA_DICTIONARY, "N"); settings.SetString(SessionSettings.SEND_REDUNDANT_RESENDREQUESTS, "Y"); settings.SetString(SessionSettings.RESEND_SESSION_LEVEL_REJECTS, "Y"); settings.SetString(SessionSettings.MILLISECONDS_IN_TIMESTAMP, "Y"); settings.SetString(SessionSettings.CONNECTION_TYPE, "initiator"); settings.SetString(SessionSettings.HEARTBTINT, "30"); settings.SetString(SessionSettings.START_TIME, "12:00:00"); settings.SetString(SessionSettings.END_TIME, "12:00:00"); settings.SetString(SessionSettings.ENABLE_LAST_MSG_SEQ_NUM_PROCESSED, "Y"); settings.SetString(SessionSettings.MAX_MESSAGES_IN_RESEND_REQUEST, "2500"); settings.SetString(SessionSettings.SEND_LOGOUT_BEFORE_TIMEOUT_DISCONNECT, "Y"); settings.SetString(SessionSettings.IGNORE_POSSDUP_RESEND_REQUESTS, "Y"); Session session = factory.Create(sessionID, settings); Assert.That(session.SendRedundantResendRequests); Assert.That(session.ResendSessionLevelRejects); Assert.That(session.MillisecondsInTimeStamp); settings.SetString(SessionSettings.SEND_REDUNDANT_RESENDREQUESTS, "N"); settings.SetString(SessionSettings.RESEND_SESSION_LEVEL_REJECTS, "N"); settings.SetString(SessionSettings.MILLISECONDS_IN_TIMESTAMP, "N"); session = factory.Create(sessionID, settings); Assert.That(!session.SendRedundantResendRequests); Assert.That(!session.ResendSessionLevelRejects); Assert.That(!session.MillisecondsInTimeStamp); Assert.That(session.EnableLastMsgSeqNumProcessed); Assert.That(session.MaxMessagesInResendRequest, Is.EqualTo(2500)); Assert.That(session.SendLogoutBeforeTimeoutDisconnect); Assert.That(session.IgnorePossDupResendRequests); }
static void Main(string[] args) { Log.Logger = new LoggerConfiguration().WriteTo.File("serilogfile.txt").WriteTo.Console().Enrich.FromLogContext().CreateLogger(); var doc = new XmlDocument(); doc.Load("C:/FixGenium.xml"); var settings = new SessionSettings("fixconfig.ini"); var application = new EmptyQuickfixApp(); var storeFactory = new MemoryStoreFactory(); var logFactory = new FileLogFactory(settings); var acceptor = new ThreadedSocketAcceptor(application, storeFactory, settings, logFactory); acceptor.Start(); Console.WriteLine("Started"); Console.ReadLine(); }
void StartEngine(bool initiator) { TestApplication application = new TestApplication(LogonCallback, LogoffCallback); IMessageStoreFactory storeFactory = new MemoryStoreFactory(); ILogFactory logFactory = new ScreenLogFactory(false, false, false); SessionSettings settings = new SessionSettings(); if (initiator) { Dictionary defaults = new Dictionary(); defaults.SetString(SessionSettings.RECONNECT_INTERVAL, "1"); settings.Set(defaults); settings.Set(CreateSessionID(StaticInitiatorCompID), CreateSessionConfig(StaticInitiatorCompID, true)); _initiator = new SocketInitiator(application, storeFactory, settings, logFactory); _initiator.Start(); } else { settings.Set(CreateSessionID(StaticAcceptorCompID), CreateSessionConfig(StaticAcceptorCompID, false)); _acceptor = new ThreadedSocketAcceptor(application, storeFactory, settings, logFactory); _acceptor.Start(); } }
public void TestPersistMessages() { IApplication app = new NullApplication(); IMessageStoreFactory storeFactory = new MemoryStoreFactory(); SessionFactory factory = new SessionFactory(app, storeFactory); SessionID sessionID = new SessionID("FIX.4.2", "SENDER", "TARGET"); Dictionary settings = new Dictionary(); settings.SetString(SessionSettings.USE_DATA_DICTIONARY, "N"); settings.SetString(SessionSettings.CONNECTION_TYPE, "initiator"); settings.SetString(SessionSettings.HEARTBTINT, "30"); settings.SetString(SessionSettings.START_TIME, "12:00:00"); settings.SetString(SessionSettings.END_TIME, "12:00:00"); Session session = factory.Create(sessionID, settings); //true by default Assert.That(session.PersistMessages); settings.SetBool(SessionSettings.PERSIST_MESSAGES, false); session = factory.Create(sessionID, settings); Assert.That(!session.PersistMessages); }
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!"); }
public ChannelTcpConflated(TCPConflatedConfig conflatedConfig) { logger = LogManager.GetLogger("ChannelTcpConflated-" + conflatedConfig.ChannelID); MDSUtils.AddAppender("ChannelTcpConflated-" + conflatedConfig.ChannelID, logger.Logger); _bKeepRunning = true; machineGun = new MachineGunFixSplitter(); machineGun.UnderFIXMessageFire += new FIXMachineGunEventHandler(machineGun_UnderFIXMessageFire); machineGun.Start(); thQueueProc = new Thread(new ThreadStart(queueProc)); thQueueProc.Start(); thSplitProc = new Thread(new ThreadStart(splitterThreadWork)); thSplitProc.Start(); _channelUmdfConfig = conflatedConfig; //if (!listaChannelQueues.ContainsKey(conflatedConfig.ChannelID)) // listaChannelQueues.Add(conflatedConfig.ChannelID, new ListChannelQueues(qUdpPkt, replayLockObject)); logger.Info("Start(): iniciando sessao FIX..."); try { // Cria sessao FIX _session = new QuickFix.SessionID( conflatedConfig.BeginString, conflatedConfig.SenderCompID, conflatedConfig.TargetCompID); // Cria dicionario da configuracao QuickFix.Dictionary mainDic = new QuickFix.Dictionary(); mainDic.SetLong("SocketConnectPort", conflatedConfig.ProxyPort); mainDic.SetLong("HeartBtInt", conflatedConfig.HeartBtInt); mainDic.SetLong("ReconnectInterval", conflatedConfig.ReconnectInterval); mainDic.SetBool("ResetOnLogon", conflatedConfig.ResetOnLogon); mainDic.SetBool("ResetOnLogout", conflatedConfig.ResetOnLogout); mainDic.SetBool("ResetOnDisconnect", conflatedConfig.ResetOnDisconnect); mainDic.SetBool("PersistMessages", conflatedConfig.PersistMessages); mainDic.SetString("ConnectionType", conflatedConfig.ConnectionType); mainDic.SetString("SocketConnectHost", conflatedConfig.ProxyHost); mainDic.SetString("FileStorePath", conflatedConfig.FileStorePath); mainDic.SetString("FileLogPath", conflatedConfig.FileLogPath); mainDic.SetString("StartTime", conflatedConfig.StartTime); mainDic.SetString("EndTime", conflatedConfig.EndTime); QuickFix.Dictionary sessDic = new QuickFix.Dictionary(); sessDic.SetString("BeginString", conflatedConfig.BeginString); sessDic.SetString("SenderCompID", conflatedConfig.SenderCompID); sessDic.SetString("TargetCompID", conflatedConfig.TargetCompID); sessDic.SetString("DataDictionary", conflatedConfig.DataDictionary); sessDic.SetBool("CheckLatency", false); sessDic.SetBool("UseDataDictionary", true); sessDic.SetLong("SocketReceiveBufferSize", conflatedConfig.SocketReceiveBufferSize); // 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, this, message); _initiator.Start(); QuickFix.Session mySession = QuickFix.Session.LookupSession(_session); QuickFix.Session.LookupSession(_session).ValidateLengthAndChecksum = false; } catch (Exception ex) { logger.Error("Start():" + ex.Message, ex); } logger.Info("Start(): Sessao FIX iniciado!"); }
public void Start() { try { logger.Info("FixDropCopy Start(): Iniciando ThreadedSocketAcceptor...."); _running = true; // Buscar Application Path para compor diretorios de dicionario e afins(Substring(6) para retirar 'file:\') string path = Path.GetDirectoryName(Assembly.GetAssembly(typeof(FixAcceptor)).CodeBase).Substring(6); logger.Info("Application Path: " + path); _config = GerenciadorConfig.ReceberConfig <FixDropCopyConfig>(); // Cria dicionario da configuracao Dictionary mainDic = new Dictionary(); if (_config.SocketAcceptPort > 0) { mainDic.SetLong("SocketAcceptPort", _config.SocketAcceptPort); } mainDic.SetLong("HeartBtInt", _config.HeartBtInt); mainDic.SetLong("ReconnectInterval", _config.ReconnectInterval); mainDic.SetString("FileStorePath", _config.FileStorePath); logger.Debug("FileLogPath: " + _config.FileLogPath); mainDic.SetString("FileLogPath", _config.FileLogPath); logger.Debug("DebugFileLogPath: " + _config.FileLogPath); mainDic.SetString("DebugFileLogPath", _config.DebugFileLogPath); mainDic.SetString("StartTime", _config.StartTime); mainDic.SetString("EndTime", _config.EndTime); mainDic.SetString("ConnectionType", "acceptor"); // Configure the session settings SessionSettings settings = new SessionSettings(); settings.Set(mainDic); foreach (FixSessionItem info in _sessionsDropCopy) { Dictionary sessDic = new Dictionary(); string strdictionary = path + Path.DirectorySeparatorChar + info.DataDictionary; sessDic.SetString("DataDictionary", strdictionary); sessDic.SetBool("UseDataDictionary", info.UseDataDictionary); sessDic.SetBool("ResetOnLogon", info.ResetSeqNum); sessDic.SetBool("PersistMessages", info.PersistMessages); logger.InfoFormat("Criando sessao DROPCOPY S:[{0}] T:[{1}] UseDic:[{2}] Dic:[{3}] Rst:[{4}] Pers:[{5}] Begstr:[{6}] FinancialLimit:[{7}] Port:[{8}] IdClient[{9}]", info.SenderCompID, info.TargetCompID, info.UseDataDictionary, strdictionary, info.ResetSeqNum, info.PersistMessages, info.BeginString, info.FinancialLimit, info.Operador, info.IdCliente ); // Adicionar no dicionario para validacao de logon // Atribui respectivo Initiator para cada sessao SessionDropCopy ssDrop = new SessionDropCopy(); //FixInitiator aux = null; //foreach (FixInitiator init in _lstInitiator) //{ // if (init.Canal == info.Operador) // { // aux = init; // break; // } //} ssDrop.Config = info; //ssDrop.Initiator = aux; //ssDrop.CalcularLimite = info.FinancialLimit; /* */ SessionID session = new SessionID(info.BeginString, info.TargetCompID, info.SenderCompID); ssDrop.Sessao = session; ssDrop.Start(); //_dicSessionsDropCopy.Add(session, ssDrop); List <SessionDropCopy> lstDC = null; if (_dicSessionsDropCopy.TryGetValue(info.Operador, out lstDC)) { lstDC.Add(ssDrop); } else { List <SessionDropCopy> lst = new List <SessionDropCopy>(); lst.Add(ssDrop); _dicSessionsDropCopy.Add(info.Operador, lst); } // Adicionar a sessao no initiator, para conseguir "referencia cruzada" // Verificar se nao ocorre erros //if (null != aux) //{ // ssAcceptor.Initiator.AddSessionAcceptor(session, ssAcceptor); //} settings.Set(session, sessDic); } //FileStoreFactory store = new FileStoreFactory(settings); MemoryStoreFactory store = new MemoryStoreFactory(); FileLogFactory logs = new FileLogFactory(settings); IMessageFactory msgs = new DefaultMessageFactory(); logger.Info("Iniciando ThreadedSocketAcceptor ..."); _socketDropCopy = new ThreadedSocketAcceptor(this, store, settings, logs, msgs); _socketDropCopy.Start(); logger.Info("Start(): ThreadedSocketAcceptor em execucao...."); logger.Info("Start(): Iniciando thread de mensagens...."); // Thread para receber as mensagens de acceptors _thDropCopy = new Thread(new ThreadStart(this.SendToDropCopy)); _thDropCopy.Priority = ThreadPriority.Normal; _thDropCopy.Start(); logger.Info("Start(): thread de mensagens iniciada...."); logger.Info("FixDropCopy Start(): Fim de Inicializacao do ThreadedSocketAcceptor...."); } catch (Exception ex) { logger.Error("Problemas no start da sessao FixDropCopy: " + ex.Message, ex); throw ex; } }
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 void Start() { try { logger.Info("FixInitiatorDropCopy Start(): Iniciando FixInitiatorDropCopy...."); _running = true; // Buscar Application Path para compor diretorios de dicionario e afins(Substring(6) para retirar 'file:\') string path = Path.GetDirectoryName(Assembly.GetAssembly(typeof(FixInitiatorDropCopy)).CodeBase).Substring(6); //logger.Info("Application Path: " + path); // Cria sessao que será usada para mandar as mensagens _session = new SessionID(_config.BeginString, _config.SenderCompID, _config.TargetCompID); // Cria dicionario da configuracao Dictionary mainDic = new Dictionary(); mainDic.SetLong("SocketConnectPort", _config.SocketPort); mainDic.SetLong("HeartBtInt", _config.HeartBtInt); mainDic.SetLong("ReconnectInterval", _config.ReconnectInterval); mainDic.SetBool("ResetOnLogon", _config.ResetSeqNum); mainDic.SetBool("PersistMessages", _config.PersistMessages); // Ver // ret.setString("ConnectionType", ConnectionType.ToLower()); mainDic.SetString("ConnectionType", _config.ConnectionType.ToLower()); mainDic.SetString("SocketConnectHost", _config.Host); mainDic.SetString("FileStorePath", path + Path.DirectorySeparatorChar + _config.FileStorePath); //string = path + Path.DirectorySeparatorChar + info.DataDictionary; logger.Debug("FileLogPath: " + path + Path.DirectorySeparatorChar + _config.FileLogPath); mainDic.SetString("FileLogPath", path + Path.DirectorySeparatorChar + _config.FileLogPath); mainDic.SetString("DebugFileLogPath", path + Path.DirectorySeparatorChar + _config.DebugFileLogPath); mainDic.SetString("StartTime", _config.StartTime); mainDic.SetString("EndTime", _config.EndTime); mainDic.SetString("ConnectionType", "initiator"); Dictionary sessDic = new Dictionary(); sessDic.SetString("BeginString", _config.BeginString); sessDic.SetString("SenderCompID", _config.SenderCompID); sessDic.SetString("TargetCompID", _config.TargetCompID); sessDic.SetString("DataDictionary", path + Path.DirectorySeparatorChar + _config.DataDictionary); sessDic.SetBool("UseDataDictionary", _config.UseDataDictionary); // Configure the session settings SessionSettings settings = new SessionSettings(); settings.Set(mainDic); settings.Set(_session, sessDic); //FileStoreFactory store = new FileStoreFactory(settings); MemoryStoreFactory store = new MemoryStoreFactory(); FileLogFactory logs = new FileLogFactory(settings); IMessageFactory msgs = new DefaultMessageFactory(); logger.InfoFormat("Iniciando ThreadedSocketInitiator... SenderCompID: [{0}] TargetCompID: [{1}] SocketConnectHost:[{2}] SocketConnectPort:[{3}]", _config.SenderCompID, _config.TargetCompID, _config.Host, _config.SocketPort); _socketInitiator = new SocketInitiator(this, store, settings, logs, msgs); _socketInitiator.Start(); // Thread para receber as mensagens de acceptors _thToDb = new Thread(new ThreadStart(this._sendtoDb)); _thToDb.Start(); logger.Info("FixInitiatorDropCopy Start(): Fim de inicializacao FixInitiator...."); } catch (Exception ex) { logger.Error("Erro ao inicializar Fix Initiator DropCopy", ex); throw ex; } }