Exemplo n.º 1
0
        private ExecutarCancelamentoOrdemResponse EnfileirarCancelamento(ExecutarCancelamentoOrdemRequest request)
        {
            ExecutarCancelamentoOrdemResponse response = new ExecutarCancelamentoOrdemResponse();

            string msg = "Cancelamento de Ordem enviado com sucesso";
            StatusRoteamentoEnum status = StatusRoteamentoEnum.Sucesso;

            response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaCancelamento(msg, status);

            queueCancelamento.Enqueue(request);

            return(response);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Envia um pedido de cancelamento de ordem para o canal correspondente
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ExecutarCancelamentoOrdemResponse CancelarOrdem(ExecutarCancelamentoOrdemRequest request)
        {
            ExecutarCancelamentoOrdemResponse response = new ExecutarCancelamentoOrdemResponse();
            CanalInfo            _canal = null;
            StatusRoteamentoEnum status = StatusRoteamentoEnum.Sucesso;
            string msg = "Cancelamento Enviado";

            logger.Debug("Request de Cancelamento Recebido:");
            logger.Debug("Cliente ......: " + request.info.Account);
            logger.Debug("Bolsa ........: " + request.info.Exchange);
            logger.Debug("Canal ........: " + request.info.ChannelID);
            logger.Debug("Order ID .....: " + request.info.OrderID);
            logger.Debug("OrigClOrdID ..: " + request.info.OrigClOrdID);
            logger.Debug("ClOrdID ......: " + request.info.ClOrdID);


            try
            {
                _canal = (CanalInfo)_canais[request.info.Exchange + request.info.ChannelID];

                if (!_bKeepRunning)
                {
                    msg    = "Servico esta em finalizacao";
                    status = StatusRoteamentoEnum.Erro;
                    logger.Info(msg);
                    response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaCancelamento(msg, status);
                    return(response);
                }

                if (_canal == null)
                {
                    msg    = "Nao ha canal configurado para " + request.info.Exchange + "-" + request.info.ChannelID;
                    status = StatusRoteamentoEnum.Erro;
                    logger.Info(msg);
                    response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaCancelamento(msg, status);
                }
                else
                {
                    if (_canal.roteador == null || _canal.Conectado == false)
                    {
                        status = StatusRoteamentoEnum.Erro;
                        msg    = "Nao ha canal ativo e conectado para " + request.info.Exchange + "-" + request.info.ChannelID;
                        logger.Info(msg);
                        response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaCancelamento(msg, status);
                    }
                    else
                    {
                        response = EnfileirarCancelamento(request);
                    }
                }
            }
            catch (Exception ex)
            {
                msg    = "CancelarOrdem(): " + ex.Message;
                status = StatusRoteamentoEnum.Erro;
                logger.Error(msg + "-" + ex.StackTrace);
                response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaCancelamento(msg, status);

                if (_canal != null)
                {
                    _resetCanal(_canal);
                }
            }

            logger.Info(msg);

            logger.Debug("Request de Cancelamento Recebido:");

            return(response);
        }