protected override void trataAssinatura(string tipo, string instrumento, string sessionID)
        {
            string mensagem = "";
            NegociosConsumerBase        negociosConsumer = ContainerManager.Instance.NegociosConsumer;
            Dictionary <string, string> cabecalho        = MDSUtils.montaCabecalhoStreamer(tipo, null, ConstantesMDS.HTTP_OFERTAS_TIPO_ACAO_COMPLETO, instrumento, negociosConsumer.RetornaCasasDecimais(instrumento), sessionID);

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

            // 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)
            {
                EventoHttpLivroNegocios httpLNG;
                httpLNG           = negociosConsumer.SnapshotStreamerLivroNegocios(instrumento);
                httpLNG.cabecalho = cabecalho;

                logger.Debug("Snapshot LNG de " + instrumento + ": " + httpLNG.negocio.Count + " items");

                mensagem = JsonConvert.SerializeObject(httpLNG);
                mensagem = MDSUtils.montaMensagemHttp(ConstantesMDS.TIPO_REQUISICAO_LIVRO_NEGOCIOS, instrumento, null, mensagem);

                queueToStreamer.Enqueue(mensagem);
            }
        }
        protected override void trataAssinatura(string tipo, string instrumento, string sessionID)
        {
            string mensagem  = "";
            bool   bsinaliza = false;
            LivroOfertasConsumerBase lofConsumer = ContainerManager.Instance.LivroOfertasConsumer;

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

            // 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)
            {
                EventoHttpLivroOfertasAgregado httpLOA;
                httpLOA = lofConsumer.SnapshotStreamerLivroAgregado(instrumento, sessionID);

                logger.Debug("Snapshot LOA de " + instrumento + ": " + httpLOA.livroCompra.Count + "C/" + httpLOA.livroVenda.Count + "V items");

                mensagem = JsonConvert.SerializeObject(httpLOA);
                mensagem = MDSUtils.montaMensagemHttp(ConstantesMDS.TIPO_REQUISICAO_LIVRO_OFERTAS_AGREGADO, instrumento, null, mensagem);

                bsinaliza = queueToStreamer.IsEmpty;
                queueToStreamer.Enqueue(mensagem);
            }

            if (bsinaliza)
            {
                lock (syncQueueToStreamer)
                {
                    Monitor.Pulse(syncQueueToStreamer);
                }
            }
        }
        private void despacharEventos(object sender, HttpNegocioEventArgs args)
        {
            try
            {
                string            mensagem = null;
                EventoHttpNegocio httpNEG  = args.Evento;


                if (dctSessions.ContainsKey(httpNEG.instrumento))
                {
                    mensagem = JsonConvert.SerializeObject(httpNEG);
                    mensagem = MDSUtils.montaMensagemHttp(ConstantesMDS.TIPO_REQUISICAO_NEGOCIOS, httpNEG.instrumento, null, mensagem);

                    logger.Debug("INCR Negocio[" + httpNEG.instrumento + "]: " + mensagem);

                    if (!String.IsNullOrEmpty(mensagem))
                    {
                        queueToStreamer.Enqueue(mensagem);
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error("despacharEventos(): " + ex.Message, ex);
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="evtCache"></param>
        private void flushEventCache(EventoHttpLivroOfertasAgregado evtCache)
        {
            string mensagem = null;

            try
            {
                mensagem = JsonConvert.SerializeObject(evtCache);
                mensagem = MDSUtils.montaMensagemHttp(ConstantesMDS.TIPO_REQUISICAO_LIVRO_OFERTAS_AGREGADO, evtCache.instrumento, null, mensagem);

                bool bsinaliza = false;
                lock (objLockSnapshot)
                {
                    if (!String.IsNullOrEmpty(mensagem))
                    {
                        bsinaliza = queueToStreamer.IsEmpty;
                        queueToStreamer.Enqueue(mensagem);
                    }
                }

                if (bsinaliza)
                {
                    lock (syncQueueToStreamer)
                    {
                        Monitor.Pulse(syncQueueToStreamer);
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error("flushEventCache(): " + ex.Message, ex);
            }
        }
        protected override void trataAssinatura(string tipo, string instrumento, string sessionID)
        {
            string mensagem = "";
            NegociosConsumerBase negociosConsumer = ContainerManager.Instance.NegociosConsumer;

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

            EventoHttpNegocio httpNEG = negociosConsumer.SnapshotStreamerNegocio(instrumento);

            if (httpNEG != null)
            {
                Dictionary <string, string> cabecalho = MDSUtils.montaCabecalhoStreamer(tipo, null, ConstantesMDS.HTTP_OFERTAS_TIPO_ACAO_COMPLETO, instrumento, negociosConsumer.RetornaCasasDecimais(instrumento), sessionID);

                httpNEG.cabecalho = cabecalho;

                mensagem = JsonConvert.SerializeObject(httpNEG);
                mensagem = MDSUtils.montaMensagemHttp(ConstantesMDS.TIPO_REQUISICAO_NEGOCIOS, instrumento, null, mensagem);

                logger.Debug("SNAP Negocio[" + httpNEG.instrumento + "]: " + mensagem);

                bool sinaliza = queueToStreamer.IsEmpty;
                queueToStreamer.Enqueue(mensagem);

                if (sinaliza)
                {
                    lock (syncQueueToStreamer)
                    {
                        Monitor.Pulse(syncQueueToStreamer);
                    }
                }
            }
        }