/// <summary> /// AssinarStatusConexaoBolsa - trata os pedidos de assinatura dos eventos de conexao e desconexao a bolsa /// </summary> /// <param name="request">obejto do tipo AssinarStatusConexaoBolsaRequest</param> /// <returns>objeto do tipo AssinarStatusConexaoBolsaResponse</returns> public virtual AssinarStatusConexaoBolsaResponse AssinarStatusConexaoBolsa(AssinarStatusConexaoBolsaRequest request) { lock (_exchangeStatusSubscribers) { _exchangeStatusSubscribers.Add(Ativador.GetCallback <IRoteadorOrdensCallback>()); } return(new AssinarStatusConexaoBolsaResponse()); }
/// <summary> /// AssinarExecutacaoOrdens - trata os pedidos de assinatura de eventos de execucao de ordens /// </summary> /// <param name="request">objeto do tipo </param> /// <returns></returns> public virtual AssinarExecucaoOrdemResponse AssinarExecucaoOrdens(AssinarExecucaoOrdemRequest request) { lock (_executionsReportsSubscribers) { _executionsReportsSubscribers.Add(Ativador.GetCallback <IRoteadorOrdensCallback>()); } return(new AssinarExecucaoOrdemResponse()); }
/// <summary> /// AssinarStatusConexaoBolsa - trata os pedidos de assinatura dos eventos de conexao e desconexao a bolsa /// </summary> /// <param name="request">obejto do tipo AssinarStatusConexaoBolsaRequest</param> /// <returns>objeto do tipo AssinarStatusConexaoBolsaResponse</returns> public AssinarStatusConexaoBolsaResponse AssinarStatusConexaoBolsa(AssinarStatusConexaoBolsaRequest request) { IRoteadorOrdensCallback subscriber = Ativador.GetCallback <IRoteadorOrdensCallback>(); logger.Debug("Recebeu pedido de assinatura de status de conexao: " + ((IContextChannel)subscriber).RemoteAddress.ToString()); lock (_exchangeStatusSubscribers) { _exchangeStatusSubscribers.Add(subscriber); } return(new AssinarStatusConexaoBolsaResponse()); }
/// <summary> /// AssinarExecutacaoOrdens - trata os pedidos de assinatura de eventos de execucao de ordens /// </summary> /// <param name="request">objeto do tipo </param> /// <returns></returns> public AssinarExecucaoOrdemResponse AssinarExecucaoOrdens(AssinarExecucaoOrdemRequest request) { IRoteadorOrdensCallback subscriber = Ativador.GetCallback <IRoteadorOrdensCallback>(); logger.Debug("Recebeu pedido de assinatura de ordens: " + ((IContextChannel)subscriber).RemoteAddress.ToString()); // Guarda a referencia do assinante na lista interna de // assinante lock ( _executionsReportsSubscribers ) { if (subscriber != null) { _executionsReportsSubscribers.Add(subscriber); } } // Envia as respostas de ordens ja recebidas para o assinante List <OrdemInfo> queuedInfos = null; lock (_orderReportInfo) { if (_orderReportInfo.Count > 0) { queuedInfos = _orderReportInfo.ToList(); } } //if ( queuedInfos != null && queuedInfos.Count > 0 ) //{ // logger.Info("Existem " + queuedInfos.Count + " msgs enfileiradas, encaminhando para assinante"); // ThreadPool.QueueUserWorkItem( // new WaitCallback( // delegate(object required) // { // foreach (OrdemInfo info in queuedInfos) // { // subscriber.OrdemAlterada(info); // _bOrdemInfoSent = true; // } // } // ) // ); //} return(new AssinarExecucaoOrdemResponse()); }
/// <summary> /// /// </summary> public void AssinarDropCopyCallback() { IDropCopyCallback subscriber = Ativador.GetCallback <IDropCopyCallback>(); logger.Info("Recebeu pedido de assinatura de callback de dropycopy: " + ((IContextChannel)subscriber).RemoteAddress.ToString()); // Guarda a referencia do assinante na lista interna de // assinante lock (_lstDropCopySubscribers) { if (subscriber != null) { _lstDropCopySubscribers.Add(subscriber); } } }
public AssinarEventosSTMResponse AssinarEventosSTM(AssinarEventosSTMRequest request) { AssinarEventosSTMResponse response = new AssinarEventosSTMResponse(); response.Status = "OK"; try { response.Status = "ERRO"; IServicoSTMCallback subscriber = Ativador.GetCallback <IServicoSTMCallback>(); logger.Debug("Recebeu pedido de assinatura de mensagens: " + ((IContextChannel)subscriber).RemoteAddress.ToString()); // Guarda a referencia do assinante na lista interna de // assinantes if (subscriber != null) { lock (_subscribers) { _subscribers.Add(subscriber); } STMSubscriberWorker worker = new STMSubscriberWorker(subscriber); worker.Start(); lock (_workers) { _workers.Add(worker); } } } catch (Exception ex) { logger.Error("AssinarEventosSTM() Erro: " + ex.Message, ex); response.Status = "ERRO"; response.Mensagem = ex.Message; } return(response); }