static void Main(string[] args) { if (args.Length != 1) { Console.WriteLine("usage: executor_csharp FILE."); return; } try { SessionSettings settings = new SessionSettings(args[0]); Application application = new Application(); FileStoreFactory storeFactory = new FileStoreFactory(settings); ScreenLogFactory logFactory = new ScreenLogFactory(settings); MessageFactory messageFactory = new DefaultMessageFactory(); SocketAcceptor acceptor = new SocketAcceptor(application, storeFactory, settings, logFactory, messageFactory); acceptor.start(); Console.WriteLine("press <enter> to quit"); Console.Read(); acceptor.stop(); } catch (Exception e) { Console.WriteLine(e); } }
public static IMessageFactory CreateDefaultMessageFactory() { var factory = new DefaultMessageFactory(); AddDefaultResolvers(factory); return(factory); }
static void Main() { try { ClientInitiator app = new ClientInitiator(); SessionSettings settings = new SessionSettings(@"C:\Users\anhtv\Desktop\QuickFix\QuickFix\initiator.cfg"); QuickFix.Application application = new ClientInitiator(); FileStoreFactory storeFactory = new FileStoreFactory(settings); ScreenLogFactory logFactory = new ScreenLogFactory(settings); MessageFactory messageFactory = new DefaultMessageFactory(); SocketInitiator initiator = new SocketInitiator(application, storeFactory, settings, logFactory, messageFactory); initiator.start(); Thread.Sleep(3000); System.Collections.ArrayList list = initiator.getSessions(); SessionID sessionID = (SessionID)list[0]; Console.WriteLine("Press any key: "); string x = Console.ReadLine(); QuickFix42.NewOrderSingle order = new QuickFix42.NewOrderSingle(new ClOrdID("Hello"), new HandlInst(HandlInst.AUTOMATED_EXECUTION_ORDER_PRIVATE), new Symbol("ABC"), new Side(Side.SELL), new TransactTime(DateTime.Now), new OrdType(OrdType.MARKET)); bool sent = Session.sendToTarget(order, sessionID); Console.ReadLine(); initiator.stop(); } catch (Exception e) { Console.WriteLine(e.ToString()); Console.ReadLine(); } }
static void Main(string[] args) { AppLogger = new PerDayFileLogSource(Directory.GetCurrentDirectory() + "\\Log", Directory.GetCurrentDirectory() + "\\Log\\Backup") { FilePattern = "Log.{0:yyyy-MM-dd}.log", DeleteDays = 20 }; string path = ConfigurationManager.AppSettings["InitiatorPath"]; SessionSettings = new SessionSettings(path); FileStoreFactory = new FileStoreFactory(SessionSettings); ScreenLogFactory = new ScreenLogFactory(SessionSettings); MessageFactory = new DefaultMessageFactory(); Program myProgram = new Program(); Initiator = new SocketInitiator(myProgram, FileStoreFactory, SessionSettings, ScreenLogFactory, MessageFactory); Initiator.start(); Console.WriteLine("Initiator successfully started..."); Console.ReadKey(); }
public void Iniciar() { SessionSettings settings = new SessionSettings(this.ArquivoConfiguracao); FileStoreFactory store = new FileStoreFactory(settings); FileLogFactory logs = new FileLogFactory(settings); MessageFactory msgs = new DefaultMessageFactory(); // Cria o socket if (this.EhInitiator) { _socketInitiator = new SocketInitiator( this.AplicacaoFix, store, settings, logs, msgs); _socketInitiator.start(); } else { _socketAcceptor = new SocketAcceptor( this.AplicacaoFix, store, settings, logs, msgs); _socketAcceptor.start(); } // Envia mensagem para aplicação this.AplicacaoFix.Iniciar(); }
public void Start(IFIXServices fixServices) { this.fixServices = fixServices; this.settings = new SessionSettings(settingsPath); this.storeFactory = new FileStoreFactory(this.settings); this.logFactory = new FileLogFactory(this.settings); this.messageFactory = new DefaultMessageFactory(); this.initiator = new SocketInitiator(this, this.storeFactory, this.settings, this.messageFactory); this.initiator.start(); }
public void Start() { SessionSettings settings = new SessionSettings(ConfigFileName); FileStoreFactory storeFactory = new FileStoreFactory(settings); FileLogFactory logFactory = new FileLogFactory(settings); MessageFactory messageFactory = new DefaultMessageFactory(); this.initiator = new SocketInitiator(this, storeFactory, settings, logFactory /*optional*/, messageFactory); this.initiator.start(); }
public void GroupCreateTest_DefaultFix50Sp2() { DefaultMessageFactory dmf = new DefaultMessageFactory(); Group g44 = dmf.Create("FIX.4.4", "B", 33); Assert.IsInstanceOf <QuickFix.FIX44.News.LinesOfTextGroup>(g44); Group g50sp2 = dmf.Create("FIXT.1.1", "CD", QuickFix.Fields.Tags.NoAsgnReqs); Assert.IsInstanceOf <QuickFix.FIX50SP2.StreamAssignmentReport.NoAsgnReqsGroup>(g50sp2); }
static void Main(string[] args) { SessionID _DummySessionID = new SessionID("a", "b", "c"); IMessageFactory _defaultMsgFactory = new DefaultMessageFactory(); //string data = "8=FIXT.1.1"+Message.SOH+"9=735"+Message.SOH+"35=AE"+Message.SOH+"34=494"+Message.SOH+"1128=8"+Message.SOH+"49=RTNSFIXUAT"+Message.SOH+"56=YEPIRECUAT"+Message.SOH+"52=20151027-11:59:15"+Message.SOH+"552=1"+Message.SOH+"54=1"+Message.SOH+"37=Z0009WSGC4"+Message.SOH+"11=NOREF"+Message.SOH+"826=0"+Message.SOH+"78=1"+Message.SOH+"79=NOT SPECIFIED"+Message.SOH+"80=120.000000"+Message.SOH+"5967=91.070000"+Message.SOH+"5966=120.000000"+Message.SOH+"5968=91.040000"+Message.SOH+"453=5"+Message.SOH+"448=YPKB"+Message.SOH+"452=3"+Message.SOH+"447=D"+Message.SOH+"802=1"+Message.SOH+"523=YPKB"+Message.SOH+"803=5"+Message.SOH+"448=BARX"+Message.SOH+"452=1"+Message.SOH+"447=D"+Message.SOH+"802=1"+Message.SOH+"523=BARX"+Message.SOH+"803=5"+Message.SOH+"448=BARX"+Message.SOH+"452=16"+Message.SOH+"447=D"+Message.SOH+"802=1"+Message.SOH+"523=BARX"+Message.SOH+"803=5"+Message.SOH+"448=bcart7"+Message.SOH+"452=11"+Message.SOH+"447=D"+Message.SOH+"448=Barclays Capital"+Message.SOH+"452=12"+Message.SOH+"447=D"+Message.SOH+"571=10106232"+Message.SOH+"150=F"+Message.SOH+"17=Z0009WSGC4"+Message.SOH+"32=120.000000"+Message.SOH+"38=120.000000"+Message.SOH+"15=CAD"+Message.SOH+"31=1.317700"+Message.SOH+"555=2"+Message.SOH+"624=1"+Message.SOH+"637=1.317700"+Message.SOH+"1418=120.000000"+Message.SOH+"588=20151028"+Message.SOH+"587=0"+Message.SOH+"1073=0.0000"+Message.SOH+"1074=91.070000"+Message.SOH+"5190=1.317700"+Message.SOH+"624=2"+Message.SOH+"637=1.318062"+Message.SOH+"1418=120.000000"+Message.SOH+"588=20151130"+Message.SOH+"587=M1"+Message.SOH+"1073=3.6200"+Message.SOH+"1074=91.040000"+Message.SOH+"5190=1.317700"+Message.SOH+"60=20151027-11:59:14"+Message.SOH+"75=20151027"+Message.SOH+"1057=Y"+Message.SOH+"39=2"+Message.SOH+"460=4"+Message.SOH+"167=FOR"+Message.SOH+"65=SW"+Message.SOH+"55=USD/CAD"+Message.SOH+"10=076"+Message.SOH; //var msg = new QuickFix.FIX50.TradeCaptureReport(); //var dd = new QuickFix.DataDictionary.DataDictionary(); //dd.Load(@"C:\Code\tfs\neerajkaushik\MarketConnect Gateway\Source\Source\QuickFix1.5\quickfixn-master\quickfixn-master\spec\fix\reuters.fix50sp1.xml"); //msg.FromString(data, false, dd, dd, _defaultMsgFactory); //MessageCracker mc = new TestCracker(); //mc.Crack(msg, _DummySessionID); //var grp = msg.GetGroup(1, Tags.NoLegs); Console.WriteLine("============="); Console.WriteLine("This is only an example program."); Console.WriteLine("It's a simple server (e.g. Acceptor) app that will let clients (e.g. Initiators)"); Console.WriteLine("connect to it. It will accept and display any application-level messages that it receives."); Console.WriteLine("Connecting clients should set TargetCompID to 'SIMPLE' and SenderCompID to 'CLIENT1' or 'CLIENT2'."); Console.WriteLine("Port is 5001."); Console.WriteLine("(see simpleacc.cfg for configuration details)"); Console.WriteLine("============="); try { SessionSettings settings = new SessionSettings("acceptor.cfg"); Application executorApp = new Executor(); MessageStoreFactory storeFactory = new FileStoreFactory(settings); LogFactory logFactory = new FileLogFactory(settings); ThreadedSocketAcceptor acceptor = new ThreadedSocketAcceptor(executorApp, storeFactory, settings, logFactory); acceptor.Start(); Console.WriteLine("press <enter> to quit"); Console.Read(); acceptor.Stop(); } catch (System.Exception e) { Console.WriteLine("==FATAL ERROR=="); Console.WriteLine(e.ToString()); Console.WriteLine("press <enter> to quit"); Console.Read(); } }
public void GroupCreateTest() { DefaultMessageFactory dmf = new DefaultMessageFactory(); Group g44 = dmf.Create("FIX.4.4", "B", 33); Assert.IsInstanceOf <QuickFix.FIX44.News.LinesOfTextGroup>(g44); Group g50 = dmf.Create("FIXT.1.1", "B", 33); Assert.IsInstanceOf <QuickFix.FIX50.News.NoLinesOfTextGroup>(g50); }
public static NewOrderSingle CrearNewOrderSinglePorString(string fixString) { var defaultMsgFactory = new DefaultMessageFactory(); var dataDictionary = new QuickFix.DataDictionary.DataDictionary(); //https://www.tradingtechnologies.com/xtrader-help/apis/fix-adapter/fix-adapter-resources/ dataDictionary.Load(AppDomain.CurrentDomain.BaseDirectory + "\\FIX42.xml"); var mensaje = new NewOrderSingle(); mensaje.FromString(fixString, false, dataDictionary, dataDictionary, defaultMsgFactory); return(mensaje); }
public static void Initialize(string settingsFilePath, Router router, FixSessionStatusChangedDelegate sessionStatus) { _FixSessionStatusChangedDelegate = sessionStatus; _router = router; SessionSettings settings = new SessionSettings(settingsFilePath); ClientApp application = new ClientApp(); FileStoreFactory storeFactory = new FileStoreFactory(settings); //logFactory = new ScreenLogFactory(settings); FileLogFactory logFactory = new FileLogFactory(settings); MessageFactory messageFactory = new DefaultMessageFactory(); _initiator = new SocketInitiator(application, storeFactory, settings, logFactory, messageFactory); }
public void GroupCreateTest_Fix50() { DefaultMessageFactory dmf = new DefaultMessageFactory(QuickFix.FixValues.ApplVerID.FIX50); Group g44 = dmf.Create("FIX.4.4", "B", 33); Assert.IsInstanceOf <QuickFix.FIX44.News.LinesOfTextGroup>(g44); Group g50 = dmf.Create("FIXT.1.1", "B", 33); Assert.IsInstanceOf <QuickFix.FIX50.News.NoLinesOfTextGroup>(g50); Group g50sp2 = dmf.Create("FIXT.1.1", "CD", QuickFix.Fields.Tags.NoAsgnReqs); Assert.IsNull(g50sp2); }
static void Main(string[] args) { SessionSettings settings = new SessionSettings(@"C:\acceptor.cfg"); Startup application = new Startup(); FileStoreFactory storeFactory = new FileStoreFactory(settings); ScreenLogFactory logFactory = new ScreenLogFactory(settings); IMessageFactory messageFactory = new DefaultMessageFactory(); ThreadedSocketAcceptor server = new ThreadedSocketAcceptor(application, storeFactory, settings, logFactory, messageFactory); server.Start(); Console.WriteLine("####### Server Socket Fix Start ...press <enter> to quit"); Console.Read(); server.Stop(); }
static SocketInitiator StartSocketInitiator(String configFile) { ClientInitiator app = new ClientInitiator(); SessionSettings settings = new SessionSettings(configFile); QuickFix.Application application = new ClientInitiator(); FileStoreFactory storeFactory = new FileStoreFactory(settings); ScreenLogFactory logFactory = new ScreenLogFactory(settings); MessageFactory messageFactory = new DefaultMessageFactory(); SocketInitiator initiator = new SocketInitiator(application, storeFactory, settings, logFactory, messageFactory); initiator.start(); Thread.Sleep(3000); return(initiator); }
public void TestCreateMessage() { //Given the following implementation of a message to be serialized and added to a DefaultMessage implementation const string originalMessage = "I am a message to be transfered"; var originalMessageBytes = new byte[10]; var serializerMock = Substitute.For<ISerializer<byte[]>>(); serializerMock.Serialize(Arg.Any<string>()).Returns(originalMessageBytes); var messageFactory = new DefaultMessageFactory(serializerMock); //When we call the CreateMessage method and get the returned DefaultMessage var message = messageFactory.CreateMessage(originalMessage); //Then the results should be the same as what we expect it to be. message.MessageType.Should().Be("String"); message.MessageContents.Should().BeSameAs(originalMessageBytes); message.MessageContentSize.Should().Be(originalMessageBytes.Length); }
static void OpenFixConn() { try { string fixClientConf = Environment.CurrentDirectory + @"\" + SystemConfigurations.GetAppSetting("FixClientConfPath"); SessionSettings settings = new SessionSettings(fixClientConf); OnConnectionChanged d = new OnConnectionChanged(FixConnChanged); _app = new ClientApp(d); //_app.OnStatusChanged+= FileStoreFactory storeFactory = new FileStoreFactory(settings); FileLogFactory logFactory = new FileLogFactory(settings); MessageFactory messageFactory = new DefaultMessageFactory(); _initiator = new SocketInitiator(_app, storeFactory, settings, logFactory, messageFactory); _initiator.start(); } catch (Exception ex) { Console.WriteLine(ex); } }
public void TestCreateMessage() { //Given the following implementation of a message to be serialized and added to a DefaultMessage implementation const string originalMessage = "I am a message to be transfered"; var originalMessageBytes = new byte[10]; var serializerMock = Substitute.For <ISerializer <byte[]> >(); serializerMock.Serialize(Arg.Any <string>()).Returns(originalMessageBytes); var messageFactory = new DefaultMessageFactory(serializerMock); //When we call the CreateMessage method and get the returned DefaultMessage var message = messageFactory.CreateMessage(originalMessage); //Then the results should be the same as what we expect it to be. message.MessageType.Should().Be("String"); message.MessageContents.Should().BeSameAs(originalMessageBytes); message.MessageContentSize.Should().Be(originalMessageBytes.Length); }
static void Main(string[] args) { try { SessionSettings settings = new SessionSettings(@"C:\Users\anhtv\Desktop\QuickFix\QuickFix\acceptor1.cfg"); FixServerApplication application = new FixServerApplication(); FileStoreFactory storeFactory = new FileStoreFactory(settings); ScreenLogFactory logFactory = new ScreenLogFactory(settings); MessageFactory messageFactory = new DefaultMessageFactory(); SocketAcceptor acceptor = new SocketAcceptor(application, storeFactory, settings, logFactory, messageFactory); acceptor.start(); Console.WriteLine("press enter to quit"); Console.Read(); acceptor.stop(); } catch (Exception e) { Console.WriteLine(e.ToString()); } }
private FixProxyServer() { quoteRequest = new QuoteRequest(); FileStoreFactory mesStoreFact; DefaultMessageFactory mesFact; SessionSettings sets; try { sets = new SessionSettings(string.Format("{0}\\{1}", ExecutablePath.ExecPath, SessionSettingsParser.SessionSettingsFileName)); SessionSettingsParser.Init(string.Format("{0}\\{1}", ExecutablePath.ExecPath, SessionSettingsParser.SessionSettingsFileName)); app = new FixApplication(); app.processMessageFromBroker += MessageDispatcher.ProcessMessageFromBroker; mesStoreFact = new FileStoreFactory(string.Format("{0}\\log", ExecutablePath.ExecPath)); mesFact = new DefaultMessageFactory(); app.OnSessionLogon += AppOnSessionLogon; } catch (Exception ex) { Logger.Error("SocketInitiator pre-create error", ex); throw; } try { initiator = new SocketInitiator(app, mesStoreFact, sets, mesFact); } catch (Exception ex) { Logger.Error("SocketInitiator create error", ex); throw; } }
public bool Start(string user, string pw) { try { SessionSettings settings = new SessionSettings(_setpath); Application application = this; FileStoreFactory storeFactory = new FileStoreFactory(settings); FileLogFactory logFactory = new FileLogFactory(settings); MessageFactory messageFactory = new DefaultMessageFactory(); acceptor = new SocketAcceptor (application, storeFactory, settings, logFactory /*optional*/, messageFactory); acceptor.start(); _val = true; return(true); } catch (Exception ex) { debug("exception starting server: " + ex.Message + ex.StackTrace); _val = false; } return(false); }
private void StartSendingMarketData() { StreamReader reader = new StreamReader(@"C:\Code\NigSEApplication\FIXT.1.1-PROD-XTRM.messages.current\log1.log"); DefaultMessageFactory defaultMessageFactory = new DefaultMessageFactory(); QuickFix.Message msg = new QuickFix.Message(); while (!reader.EndOfStream) { string line = reader.ReadLine(); string txt = "8=FIXT.1.19=00023635=W49=XTRM56=PROD34=452=20140820-07:26:00.726264=175=20140820262=*_148=MOBIL22=99762=EQTY268=5269=a326=1764=20140825269=s270=175.0000000269=u270=175.0000000269=x270=175.0000000269=y332=182.0000000333=106.000000010=143"; // line.Substring(line.IndexOf("8=") - 1).Trim(); msg.FromString(txt, false, null, null); string msgtype = msg.Header.GetString(35); if (msgtype == "W") //|| msgtype == "X") { QuickFix.Message newmsg = new Message(txt); if (Session.LookupSession(_currentSessionId).IsLoggedOn) { Session.LookupSession(_currentSessionId).ValidateLengthAndChecksum = false; Session.SendToTarget(newmsg, _currentSessionId); } else { break; } } Thread.Sleep(100); } reader.Close(); }
public void IniciarServico() { logger.Info("IniciarServico(): iniciando Servidor FIX..."); // Carrega configurações _config = GerenciadorConfig.ReceberConfig <ServidorFixConfig>(); // Cria dicionario da configuracao Dictionary mainDic = new Dictionary(); if (_config.SocketAcceptPort > 0) { mainDic.SetLong("SocketAcceptPort", _config.SocketAcceptPort); } //mainDic.SetLong("SocketConnectPort", _config.SocketConnectPort); 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("SocketConnectHost", _config.Host); 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"); CamadaDeDados db = new CamadaDeDados(); List <SessionFixInfo> sessions = db.BuscarSessoesFIX(); // Configure the session settings SessionSettings settings = new SessionSettings(); settings.Set(mainDic); foreach (SessionFixInfo info in sessions) { Dictionary sessDic = new Dictionary(); //sessDic.SetString("BeginString", _config.BeginString); //sessDic.SetString("SenderCompID", _config.SenderCompID); //sessDic.SetString("TargetCompID", _config.TargetCompID); string dataDictionary; switch (info.FixVersion) { case "5.0": dataDictionary = _config.DataDictionary50; break; case "4.4": dataDictionary = _config.DataDictionary44; break; case "4.2": default: dataDictionary = _config.DataDictionary42; break; } sessDic.SetString("DataDictionary", dataDictionary); sessDic.SetBool("UseDataDictionary", true); sessDic.SetBool("ResetOnLogon", info.ResetSeqNum != 0?true:false); sessDic.SetBool("PersistMessages", info.PersistMessages != 0 ? true : false); logger.InfoFormat("Criando sessao S:[{0}] T:[{1}] Ver:[{2}] Dic:[{3}] Rst:[{4}] Pers:[{5}] Begstr:[{6}]", info.SenderCompID, info.TargetCompID, info.FixVersion, dataDictionary, info.ResetSeqNum, info.PersistMessages, info.BeginString ); // Cria sessao que será usada para mandar as mensagens _session = new SessionID(info.BeginString, info.SenderCompID, info.TargetCompID); settings.Set(_session, sessDic); } logger.Info("Iniciando gerenciador de limites..."); LimiteManager.GetInstance().Start(); logger.Info("Iniciando cron scheduler..."); _cron = new CronStyleScheduler(); _cron.Start(); logger.Info("Iniciando Executor FIX..."); _executorApp = Executor.GetInstance(); _executorApp.Start(); FileStoreFactory store = new FileStoreFactory(settings); LogFactory logs = new FileLogFactory(settings); IMessageFactory msgs = new DefaultMessageFactory(); logger.Info("Iniciando ThreadedSocketAcceptor..."); _socketAcceptor = new ThreadedSocketAcceptor(_executorApp, store, settings, logs, msgs); _socketAcceptor.Start(); _status = ServicoStatus.EmExecucao; logger.Info("IniciarServico(): ServidorFIX em execucao...."); }
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; } }
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 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 virtual void IniciarServico() { logger.Info("IniciarServico(): iniciando canal Bovespa ...."); // Carrega configurações _config = GerenciadorConfig.ReceberConfig <CanalNegociacaoConfig>(); // Cria sessao que será usada para mandar as mensagens _session = new SessionID( new BeginString(_config.BeginString), new SenderCompID(_config.SenderCompID), new TargetCompID(_config.TargetCompID)); // Cria dicionario da configuracao Dictionary mainDic = new Dictionary(); if (_config.SocketAcceptPort > 0) { mainDic.setLong("SocketAcceptPort", _config.SocketAcceptPort); } mainDic.setLong("SocketConnectPort", _config.SocketConnectPort); 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("SocketConnectHost", _config.Host); mainDic.setString("FileStorePath", _config.FileStorePath); logger.Debug("FileLogPath: " + _config.FileLogPath); mainDic.setString("FileLogPath", _config.FileLogPath); mainDic.setString("StartTime", _config.StartTime); mainDic.setString("EndTime", _config.EndTime); if (_config.Initiator) { mainDic.setString("ConnectionType", "initiator"); } else { mainDic.setString("ConnectionType", "acceptor"); } Dictionary sessDic = new Dictionary(); sessDic.setString("BeginString", _config.BeginString); sessDic.setString("SenderCompID", _config.SenderCompID); sessDic.setString("TargetCompID", _config.TargetCompID); sessDic.setString("DataDictionary", _config.DataDictionary); sessDic.setBool("UseDataDictionary", true); // Configure the session settings SessionSettings settings = new SessionSettings(); settings.set(mainDic); settings.set(_session, sessDic); FileStoreFactory store = new FileStoreFactory(settings); FileLogFactory logs = new FileLogFactory(settings); QuickFix.MessageFactory msgs = new DefaultMessageFactory(); // Cria o socket if (_config.Initiator) { _socketInitiator = new SocketInitiator(this, store, settings, logs, msgs); _socketInitiator.start(); } else { _socketAcceptor = new SocketAcceptor(this, store, settings, logs, msgs); _socketAcceptor.start(); } _status = ServicoStatus.EmExecucao; logger.Info("IniciarServico(): canal Bovespa em execucao...."); }
public DefaultMessageFactoryTest() { _fixture = new Fixture(); _generator = Substitute.For <IMessageIdGenerator>(); _factory = new DefaultMessageFactory(_generator); }
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 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!"); }