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