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); } } } }