protected void _sendMDSLoginMSG(MDSPackageSocket mdsSocket) { string msg = "QLPP"; try { if (ConfigurationManager.AppSettings["EfetuarLogonMDS"] == null) { logger.Warn("Chave 'EfetuarLogonMDS' nao declarada no appsettings. Nao efetua login"); return; } if (!ConfigurationManager.AppSettings["EfetuarLogonMDS"].ToString().Equals("true")) { logger.Warn("Nao efetua login no MDS, EfetuarLogonMDS=false."); return; } msg += DateTime.Now.ToString("yyyyMMddHHmmssfff"); msg += System.Environment.MachineName.PadRight(20); logger.Info("Efetuando login no MDS [" + msg + "]"); if (mdsSocket != null && mdsSocket.IsConectado()) { mdsSocket.SendData(msg, true); } logger.Info("Mensagem de login enviada ao MDS"); } catch (Exception ex) { logger.Info("_sendMDSLoginMSG():" + ex.Message, ex); } }
public virtual void IniciarServico() { logger.Info("*** Iniciando Cotacao MDS para Streamer ***"); MemoriaNegociosDestaque.InicializarDicionarios(); MemoriaResumoCorretoras.InicializarDicionarios(); QueueManager.Instance.Start(); QueueManager.Instance.OnFastQuoteReceived += new MDSMessageReceivedHandler(OnNegocio); lSocket = new MDSPackageSocket(); lSocket.IpAddr = ConfigurationManager.AppSettings["ASConnMDSIp"].ToString(); lSocket.Port = ConfigurationManager.AppSettings["ASConnMDSPort"].ToString(); lSocket.OnFastQuoteReceived += new MDSMessageReceivedHandler(OnNegocio); lSocket.OpenConnection(); _sendMDSLoginMSG(lSocket); socketStreamerServer = new SocketPackage(); socketStreamerServer.OnClientConnected += new ClientConnectedHandler(socketStreamerServer_OnClientConnected); socketStreamerServer.OnRequestReceived += new MessageReceivedHandler(socketStreamerServer_OnRequestReceived); // Ativa thread para retirar mensagens de destaques da fila e enviar para os StreamerServers conectados thDestaquesProcessor = new Thread(new ThreadStart(NegociosDestaqueProcessor)); thDestaquesProcessor.Start(); // Ativa thread para retirar mensagens de leilao da fila e enviar para os StreamerServers conectados thLeilaoProcessor = new Thread(new ThreadStart(AcompanhamentoLeilaoProcessor)); thLeilaoProcessor.Start(); // Ativa thread para retirar mensagens de resumo da fila e enviar para os StreamerServers conectados thResumoProcessor = new Thread(new ThreadStart(ResumoCorretorasProcessor)); thResumoProcessor.Start(); // Ativa thread que monitora conexao com sinal MDS thMonitorConexao = new Thread(new ThreadStart(MonitorConexaoMDS)); thMonitorConexao.Start(); // Ativa thread que trata as mensagens para os Negocios em Destaque thNegociosDestaque = new Thread(new ThreadStart(TrataNegociosDestaque)); thNegociosDestaque.Start(); // Ativa thread que trata as mensagens para o Acompanhamento de Leilao thAcompanhamentoLeilao = new Thread(new ThreadStart(TrataAcompanhamentoLeilao)); thAcompanhamentoLeilao.Start(); // Ativa thread que trata as mensagens para o Resumo de Corretoras thResumoCorretoras = new Thread(new ThreadStart(TrataResumoCorretoras)); thResumoCorretoras.Start(); // Obtem o parametro de maxima diferenca de horario da ultima mensagem com a bolsa // para envio de alertas MaxDifHorarioBolsa = 75; if (ConfigurationManager.AppSettings["MaxDifHorarioBolsa"] != null) { MaxDifHorarioBolsa = Convert.ToDouble(ConfigurationManager.AppSettings["MaxDifHorarioBolsa"].ToString()); } MaxDifHorarioBolsa *= 1000; // Obtem o timeout de mensagem com o MDS, em segundos TimeoutMDS = 300; if (ConfigurationManager.AppSettings["TimeoutMDS"] != null) { TimeoutMDS = Convert.ToDouble(ConfigurationManager.AppSettings["TimeoutMDS"].ToString()); } TimeoutMDS *= 1000; // Obtem a frequencia de geracao da lista de destaques, em segundos FrequenciaGeracaoDestaques = 20; if (ConfigurationManager.AppSettings["FrequenciaGeracaoDestaques"] != null) { FrequenciaGeracaoDestaques = Convert.ToInt32(ConfigurationManager.AppSettings["FrequenciaGeracaoDestaques"].ToString()); } FrequenciaGeracaoDestaques *= 1000; // Define no timer a chamada da montagem de destaques gTimerDestaques = new Timer(new TimerCallback(MontagemListaDestaques), null, 0, FrequenciaGeracaoDestaques); // Obtem a frequencia de geracao da lista de resumo de corretoras, em segundos FrequenciaGeracaoResumo = 25; if (ConfigurationManager.AppSettings["FrequenciaGeracaoResumo"] != null) { FrequenciaGeracaoResumo = Convert.ToInt32(ConfigurationManager.AppSettings["FrequenciaGeracaoResumo"].ToString()); } FrequenciaGeracaoResumo *= 1000; // Define no timer a chamada da montagem de resumo de corretoras gTimerResumo = new Timer(new TimerCallback(MontagemListaResumo), null, 0, FrequenciaGeracaoResumo); // Obtem a frequencia de envio do acompanhamento de leilao, em milisegundos FrequenciaEnviaLeilao = 250; if (ConfigurationManager.AppSettings["FrequenciaEnviaLeilao"] != null) { FrequenciaEnviaLeilao = Convert.ToInt32(ConfigurationManager.AppSettings["FrequenciaEnviaLeilao"].ToString()); } // Define no timer a chamada do envio do acompanhamento de leilao gTimerLeilao = new Timer(new TimerCallback(EnviaAcompanhamentoLeilao), null, 0, FrequenciaEnviaLeilao); if (ConfigurationManager.AppSettings["ListenPort"] != null) { ListenPortStreamer = Convert.ToInt32(ConfigurationManager.AppSettings["ListenPort"].ToString()); } socketStreamerServer.StartListen(ListenPortStreamer); this.Status = ServicoStatus.EmExecucao; }