Example #1
0
        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);
            }
        }
Example #2
0
        public static IMessageFactory CreateDefaultMessageFactory()
        {
            var factory = new DefaultMessageFactory();

            AddDefaultResolvers(factory);
            return(factory);
        }
Example #3
0
        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();
            }
        }
Example #4
0
        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();
        }
Example #5
0
        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();
        }
Example #6
0
 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();
 }
Example #7
0
        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);
        }
Example #9
0
        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);
        }
Example #12
0
        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();
        }
Example #15
0
        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);
        }
Example #19
0
        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());
            }
        }
Example #20
0
        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;
            }
        }
Example #21
0
 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);
 }
Example #22
0
        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();
        }
Example #23
0
        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....");
        }
Example #24
0
        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;
            }
        }
Example #25
0
        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;
            }
        }
Example #26
0
        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!");
        }
Example #27
0
        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!");
        }
Example #28
0
        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....");
        }
Example #29
0
 public DefaultMessageFactoryTest()
 {
     _fixture   = new Fixture();
     _generator = Substitute.For <IMessageIdGenerator>();
     _factory   = new DefaultMessageFactory(_generator);
 }
Example #30
0
        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!");
        }
Example #31
0
        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!");
        }