/// <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); }
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); }
/// <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); }