Exemple #1
0
        /// <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());
        }
Exemple #2
0
        /// <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());
        }
Exemple #3
0
        /// <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());
        }
Exemple #4
0
        /// <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());
        }
Exemple #5
0
        /// <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);
                }
            }
        }
Exemple #6
0
        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);
        }