Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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.
        }
Exemplo n.º 4
0
        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");
        }