Beispiel #1
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!");
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        public void IniciarServico()
        {
            try
            {
                _monitorConfig = new MonitorConfig();

                logger.Info("Iniciando servidor MDS");

                logger.Info("Inicializando NEsper");

                //NesperManager.Instance.Configure();

                logger.Info("Inicializando gerenciador de filas de eventos");
                EventQueueManager.Instance.Start();

                logger.Info("Carregando configuracao dos canais UMDF");
                _umdfconfig = GerenciadorConfig.ReceberConfig <UMDFConfig>();

                logger.Info("Criando instancias dos canais UMDF");

                foreach (ChannelUMDFConfig cfgcanal in _umdfconfig.CanaisUMDF)
                {
                    cfgcanal.Segment   = cfgcanal.Segment.ToUpperInvariant();
                    cfgcanal.TCPConfig = _umdfconfig.TCPConfig;

                    ChannelUDMF canal = new ChannelUDMF(cfgcanal, _monitorConfig);
                    canal.startup = cfgcanal.Startup;

                    logger.Info("Configurado ChannelID[" + cfgcanal.ChannelID +
                                "]: SecurityList[" + cfgcanal.SecurityListHost + ":" + cfgcanal.SecurityListPorta +
                                "] Snapshot[" + cfgcanal.MDRecoveryHost + ":" + cfgcanal.MDRecoveryPorta +
                                "] Incremental[" + cfgcanal.MDIncrementalHost + ":" + cfgcanal.MDIncrementalPorta + "]");

                    _dctCanais.Add(cfgcanal.ChannelID, canal);
                    _monitorConfig.AddChannel(cfgcanal.ChannelID, cfgcanal.Startup);
                }


                logger.Info("Iniciando canais TCPConflated");
                _conflatedConfig = GerenciadorConfig.ReceberConfig <TCPConflatedConfig>();

                if (_conflatedConfig != null)
                {
                    ChannelTcpConflated tcpConflated = new ChannelTcpConflated(_conflatedConfig);

                    _dctConflated.Add(_conflatedConfig.SenderCompID, tcpConflated);
                }

                if (ConfigurationManager.AppSettings["AnaliseGraficaListenPort"] != null)
                {
                    string portaANG = ConfigurationManager.AppSettings["AnaliseGraficaListenPort"].ToString();

                    logger.Info("Iniciando servidor sinal AnaliseGrafica na porta [" + portaANG + "]");

                    servidorANG = new ServidorConexaoANG();
                    servidorANG.ListenPortNumber = Int32.Parse(portaANG);
                    servidorANG.Start();
                }

                logger.Info("Iniciando threads de tratamento dos sinais");

                ContainerManager.Instance.Start(_dctCanais);

                logger.Info("Iniciando threads dos Canais UMDF");

                foreach (ChannelUDMF canal in _dctCanais.Values)
                {
                    if (canal.startup)
                    {
                        canal.Start();
                        logger.Info("Ativado ChannelID[" + canal.channelConfig.ChannelID + "]");
                    }
                }


                Parallel.Invoke(() => {
                    Thread.Sleep(15000);
                    if (ConfigurationManager.AppSettings["StreamerListenPort"] != null)
                    {
                        string portaStreamer = ConfigurationManager.AppSettings["StreamerListenPort"].ToString();

                        logger.Info("Iniciando servidor Streaming na porta [" + portaStreamer + "]");

                        servidorStreamer = new ServidorConexaoStreamer();
                        servidorStreamer.ListenPortNumber = Int32.Parse(portaStreamer);
                        servidorStreamer.Start();
                    }
                },
                                () => {
                    Thread.Sleep(15000);
                    if (ConfigurationManager.AppSettings["CotacaoListenPort"] != null)
                    {
                        string portaCotacao = ConfigurationManager.AppSettings["CotacaoListenPort"].ToString();

                        logger.Info("Iniciando servidor cotacoes HB na porta [" + portaCotacao + "]");

                        servidorCotacao = new ServidorConexaoHB();
                        servidorCotacao.ListenPortNumber = Int32.Parse(portaCotacao);
                        servidorCotacao.Start();
                    }
                }
                                );

                _serviceStatus = ServicoStatus.EmExecucao;

                logger.Info("Servidor MDS iniciado");
            }
            catch (Exception ex)
            {
                logger.Error("IniciarServico(): " + ex.Message, ex);
            }
        }