public void Start() { _bKeepRunning = true; sockServer = new SocketPackage(); sockServer.OnClientConnected += new ClientConnectedHandler(sockServer_OnClientConnected); sockServer.OnRequestReceived += new MessageReceivedHandler(sockServer_OnRequestReceived); sockServer.OnClientDisconnected += new ClientDisconnectedHandler(sockServer_OnClientDisconnected); sockServer.StartListen(ListenPortNumber); myThread = new Thread(new ThreadStart(MonitorClient)); myThread.Name = myThreadName; myThread.Start(); }
private void MonitorClient() { long lastRun = DateTime.Now.Ticks; while (_bKeepRunning) { try { TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - lastRun); if (ts.TotalMilliseconds > 30000) { lastRun = DateTime.Now.Ticks; string sonda = GerarSonda(); List <int> toDelete = new List <int>(); foreach (ClientHandlerState state in dctClientes.Values) { logger.Info("Enviando sonda para cliente " + state.ClientNumber + "[" + state.ClientSocket.RemoteEndPoint.ToString() + "]"); try { SocketPackage.SendData(sonda, state.ClientSocket); } catch (Exception ex) { logger.Error("Erro ao enviar sonda para [" + state.ClientNumber + "] removendo cliente"); toDelete.Add(state.ClientNumber); } } if (toDelete.Count > 0) { foreach (int clientNumber in toDelete) { dctClientes.Remove(clientNumber); } } } } catch (Exception ex) { logger.Error("MonitorClient(): " + ex.Message, ex); } Thread.Sleep(100); } }
public void IniciarServico() { _bKeepRunning = true; logger.Info("Iniciando servico SpreadMonitor"); //Obtendo configuracoes // 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; // Inicia o gerenciador das threads ThreadPoolManager.Instance.Start(); // Carregar algos do DB PersistenciaDB db = new PersistenciaDB(); List <AlgoStruct> algos = db.CarregarAlgoritmos(); foreach (AlgoStruct algo in algos) { ThreadPoolManager.Instance.AddAlgoritmo(algo); } // Conectar ao MDS thMonitorMds = new Thread(new ThreadStart(this.MonitorConexaoMDS)); thMonitorMds.Start(); // Aguardar conexoes do streamer int streamerPort = 6565; if (ConfigurationManager.AppSettings["StreamerListenPort"] != null) { streamerPort = Convert.ToInt32(ConfigurationManager.AppSettings["StreamerListenPort"].ToString()); } // _sockServer = new SocketPackage(); _sockServer.StartListen(streamerPort); //_sockServer. }
protected void queueProcessor() { logger.Info("Iniciando processamento da fila de envio streamer de Livro de Negocios"); long lastLogTicks = 0; while (bKeepRunning) { try { string msgLNG = null; lock (objLockSnapshot) { if (queueToStreamer.TryDequeue(out msgLNG)) { if (!String.IsNullOrEmpty(msgLNG)) { SocketPackage.SendData(msgLNG, ClientSocket); } //if (MDSUtils.shouldLog(lastLogTicks)) //{ // lastLogTicks = DateTime.Now.Ticks; // logger.Info("Mensagens na fila: " + queueToStreamer.Count); //} continue; } } Thread.Sleep(100); } catch (Exception ex) { logger.Error("queueProcessor(): " + ex.Message, ex); } } logger.Info("Finalizando processamento da fila de envio streamer de algoritmos"); }