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