Esempio n. 1
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());
        }
Esempio n. 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 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());
        }