Beispiel #1
0
        protected void trataAssinatura(string tipo, string idlogin, string sessionID)
        {
            string                      mensagem    = "";
            ThreadPoolManager           poolManager = ThreadPoolManager.Instance;
            Dictionary <string, string> cabecalho   = MDSUtils.montaCabecalhoStreamer(tipo, null, ConstantesMDS.HTTP_ALGORITMOS_TIPO_ACAO_COMPLETO, idlogin, sessionID);

            logger.DebugFormat("{0} assinatura de {1} de {2}", sessionID, tipo, idlogin);

            // Aqui tem o pulo do gato
            // interrompe o processamento dos eventos ate a chegada do snapshot
            // para nao quebrar a sequencia do sinal do livro
            lock (objLockSnapshot)
            {
                EventoHttpAlgoritmo httpAlgo = new EventoHttpAlgoritmo();
                httpAlgo.idlogin    = idlogin;
                httpAlgo.cabecalho  = cabecalho;
                httpAlgo.algoritmos = poolManager.SnapshotStreamer(idlogin);

                logger.Debug("Snapshot algoritmos de " + idlogin + ": " + httpAlgo.algoritmos.Count + " items");

                mensagem = JsonConvert.SerializeObject(httpAlgo);
                mensagem = MDSUtils.montaMensagemHttp(ConstantesMDS.TIPO_REQUISICAO_ALGORITMO, idlogin, null, mensagem);

                queueToStreamer.Enqueue(mensagem);
            }
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="idlogin"></param>
        /// <returns></returns>
        public List <Dictionary <string, string> > SnapshotStreamer(string idlogin)
        {
            List <AlgoStruct> snapshot = new List <AlgoStruct>();

            foreach (ThreadWorkerBase worker in poolThreadDiferencial)
            {
                snapshot.AddRange(worker.SnapshotStreamer(idlogin));
            }

            foreach (ThreadWorkerBase worker in poolThreadSpread)
            {
                snapshot.AddRange(worker.SnapshotStreamer(idlogin));
            }

            foreach (ThreadWorkerBase worker in poolThreadFinanceiro)
            {
                snapshot.AddRange(worker.SnapshotStreamer(idlogin));
            }

            List <Dictionary <string, string> > retorno = new List <Dictionary <string, string> >();

            foreach (AlgoStruct algo in snapshot)
            {
                retorno.Add(MDSUtils.montaMensagemStreamerAlgoritmo(ConstantesMDS.HTTP_ALGORITMOS_TIPO_ACAO_INCLUIR, algo, 2));
            }

            return(retorno);
        }
        private string GerarSonda()
        {
            EventoHttpSonda sonda = new EventoHttpSonda();

            sonda.cabecalho = MDSUtils.montaCabecalhoStreamer(ConstantesMDS.TIPO_REQUISICAO_SONDA, null, 0, null, null);
            sonda.sonda     = new Dictionary <string, string>();
            sonda.sonda.Add(ConstantesMDS.HTTP_SONDA_DATA, DateTime.Now.ToString("yyyyMMdd"));
            sonda.sonda.Add(ConstantesMDS.HTTP_SONDA_HORA, DateTime.Now.ToString("HHmmss"));

            string mensagem = Newtonsoft.Json.JsonConvert.SerializeObject(sonda);

            return(MDSUtils.montaMensagemHttp(ConstantesMDS.TIPO_REQUISICAO_SONDA, null, null, mensagem));
        }
Beispiel #4
0
        private void despacharEventos(object sender, HttpAlgoritmoEventArgs args)
        {
            try
            {
                string mensagem = null;

                EventoHttpAlgoritmo httpAlgo = args.Evento;

                if (dctSessions.ContainsKey(httpAlgo.idlogin))
                {
                    mensagem = JsonConvert.SerializeObject(httpAlgo);
                    mensagem = MDSUtils.montaMensagemHttp(ConstantesMDS.TIPO_REQUISICAO_ALGORITMO, httpAlgo.idlogin, null, mensagem);

                    if (!String.IsNullOrEmpty(mensagem))
                    {
                        queueToStreamer.Enqueue(mensagem);
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error("despacharEventos(): " + ex.Message, ex);
            }
        }