Exemplo n.º 1
0
        /// <summary>
        /// Envia um pedido de execucao de ordem para o canal correspondente
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ExecutarOrdemResponse ExecutarOrdem(ExecutarOrdemRequest request)
        {
            ExecutarOrdemResponse response = new ExecutarOrdemResponse();
            CanalInfo             _canal   = null;
            StatusRoteamentoEnum  status   = StatusRoteamentoEnum.Sucesso;
            string msg = "Ordem Enviada";

            logger.Debug("*** ExecutarOrdem()");

            TradutorFix.DumpOrdemInfo(request.info);

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

                if (_canal == null)
                {
                    msg    = "Nao ha canal configurado para " + request.info.Exchange + "-" + request.info.ChannelID;
                    status = StatusRoteamentoEnum.Erro;
                    logger.Info(msg);
                    response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaEO(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.FormatarRespostaEO(msg, status);
                    }
                    else
                    {
                        _criaReportStore(request.info.ClOrdID);

                        _notificaEnvioParaCanal(request.info);

                        response = _canal.roteador.ExecutarOrdem(request);
                    }
                }
            }
            catch (Exception ex)
            {
                msg    = "Error ExecutarOrdem(): " + ex.Message;
                status = StatusRoteamentoEnum.Erro;
                logger.Error(msg + "-" + ex.StackTrace);
                response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaEO(msg, status);

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

            logger.Debug("*** End of ExecutarOrdem()");

            return(response);
        }
Exemplo n.º 2
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.º 3
0
        /// <summary>
        /// Formata uma mensagem de erro de Execucao de OrdemCross
        /// </summary>
        /// <param name="msg">Mensagem a ser informada para o requerente</param>
        /// <param name="status">Status indicando sucesso ou erro</param>
        /// <returns></returns>
        public static DadosRetornoExecutarOrdemCross FormatarRespostaEOX(string msg, StatusRoteamentoEnum status)
        {
            DadosRetornoExecutarOrdemCross retorno = new DadosRetornoExecutarOrdemCross();

            retorno.DataResposta = DateTime.Now;

            OcorrenciaRoteamentoOrdem ocorrencia = new OcorrenciaRoteamentoOrdem();

            ocorrencia.DataHoraOcorrencia = DateTime.Now;

            ocorrencia.Ocorrencia = msg;
            retorno.Ocorrencias.Add(ocorrencia);
            retorno.StatusResposta = status;

            return(retorno);
        }
Exemplo n.º 4
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);
        }
Exemplo n.º 5
0
        public FixResendResponse ExecutarFixResend(FixResendRequest request)
        {
            FixResendResponse    response = new FixResendResponse();
            CanalInfo            _canal   = null;
            StatusRoteamentoEnum status   = StatusRoteamentoEnum.Sucesso;
            string msg = "Ordem Enviada";

            logger.Debug("*** ExecutarFixResend()");

            try
            {
                _canal = (CanalInfo)_canais[request.Bolsa + request.Canal];

                if (_canal == null)
                {
                    msg    = "Nao ha canal configurado para " + request.Bolsa + "-" + request.Canal;
                    status = StatusRoteamentoEnum.Erro;
                    logger.Info(msg);
                    response.DadosRetorno = new DadosAdmRetornoBase();
                    response.DadosRetorno.DataResposta = DateTime.Now;
                    response.DadosRetorno.Erro         = true;
                    response.DadosRetorno.Ocorrencias.Add(msg);
                }
                else
                {
                    if (_canal.roteador == null || _canal.Conectado == false)
                    {
                        status = StatusRoteamentoEnum.Erro;
                        msg    = "Nao ha canal conectado para " + request.Bolsa + "-" + request.Canal;
                        logger.Info(msg);
                        response.DadosRetorno = new DadosAdmRetornoBase();
                        response.DadosRetorno.DataResposta = DateTime.Now;
                        response.DadosRetorno.Erro         = true;
                        response.DadosRetorno.Ocorrencias.Add(msg);
                    }
                    else
                    {
                        response = _canal.roteadorAdm.ExecutarFixResend(request);
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error("Error ExecutarFixResend():" + ex.Message, ex);

                msg    = "Error ExecutarFixResend(): " + ex.Message;
                status = StatusRoteamentoEnum.Erro;
                response.DadosRetorno = new DadosAdmRetornoBase();
                response.DadosRetorno.DataResposta = DateTime.Now;
                response.DadosRetorno.Erro         = true;
                response.DadosRetorno.Ocorrencias.Add(msg);


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

            logger.Debug("*** End of ExecutarOrdem()");

            return(response);
        }