public OrderCancelingResponse CancelOrder(OrderCancelingRequest req) { OrderCancelingResponse resp = new OrderCancelingResponse(); try { if (null != _lstfixInitiator) { // Buscar o FixInitiator de acordo com o canal int canal = Convert.ToInt32(req.ChannelID); FixInitiator item = _lstfixInitiator.FirstOrDefault(x => x.Canal.ToString() == req.ChannelID); if (null != item) { item.CancelOrderFromIntranet(req.Account, req.OrigClOrdID, req.ExchangeNumberID, req.Symbol); resp.StatusResponse = 1; } else { resp.StatusResponse = 0; resp.DescricaoErro = "Canal não encontrado para efetuar cancelamento da oferta"; } } else { resp.StatusResponse = 0; resp.DescricaoErro = "Lista de Initiators não definida"; } return(resp); } catch (Exception ex) { logger.Error("CancelOrder(): Problemas no cancelamento da ordem: " + ex.Message, ex); resp.StatusResponse = 0; resp.StackTrace = ex.StackTrace; resp.DescricaoErro = ex.Message; } return(resp); }
public void IniciarServico() { try { logger.Info("**********************************************************************"); logger.Info("**********************************************************************"); logger.Info("*** IniciarServico(): FixServer...."); // Thread.Sleep(20000); // Carrega configurações a partir do banco de dados _dbFix = new DbFix(); string strExecFile = Process.GetCurrentProcess().MainModule.FileName; strExecFile = strExecFile.Substring(strExecFile.LastIndexOf(Path.DirectorySeparatorChar) + 1); logger.Info("ExecFile: " + strExecFile); _lstCfg = _dbFix.BuscarSessoesFIXServer(strExecFile); List <FixSessionItem> lstInit = new List <FixSessionItem>(); List <FixSessionItem> lstAccept = new List <FixSessionItem>(); List <FixSessionItem> lstDropCopy = new List <FixSessionItem>(); //logger.Info("Iniciando Gerenciador de Limites"); //LimiteManager.GetInstance().Start(); string strServerName = System.Net.Dns.GetHostName() + "." + System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName; logger.Info("Atualizando 'server names' das sessoes fix"); foreach (FixSessionItem item in _lstCfg) { if (item.ConnectionType.ToLower().Equals(FixConnectionType.ACCEPTOR)) { lstAccept.Add(item); } if (item.ConnectionType.ToLower().Equals(FixConnectionType.INITIATOR)) { lstInit.Add(item); } if (item.ConnectionType.ToLower().Equals(FixConnectionType.DROPCOPY_ACCEPTOR)) { lstDropCopy.Add(item); } // Atualizar o nome do servidor para definir a "origem" das sessoes _dbFix.AtualizarServerName(item.IdSessaoFix, strServerName); } // Criar primeiramente Initiator, para ser passado como parametro para as sessoes acceptor if (lstInit.Count == 0) { logger.Info("Configurações de FixInitiator não encontradas. Não criará o SocketInitiator"); } else { foreach (FixSessionItem item in lstInit) { FixInitiator aux = new FixInitiator(item); _lstfixInitiator.Add(aux); logger.Info("IniciarServico(): iniciando SocketInitiator"); aux.Start(); } // Atribuir as sessoes para executar as tarefas (como dump do dicionario de msgs) _tasks.SetFixInitiators(_lstfixInitiator); } if (lstDropCopy.Count == 0) { logger.Info("Configurações de FixDropCopy não encontradas. Não criará o SocketAcceptor DropCopy"); } else { logger.Info("IniciarServico(): iniciando Sessao Drop Copy "); _fixDropCopy = new FixDropCopy(lstDropCopy); _fixDropCopy.Start(); //_lstfixDropCopy.Add(aux); } if (lstAccept.Count == 0) { logger.Info("Configurações de FixAcceptor não encontradas. Não criará o SocketAcceptor"); } else { logger.Info("IniciarServico(): iniciando SocketAcceptor"); _fixAcceptor = new FixAcceptor(lstAccept, _lstfixInitiator, _fixDropCopy); _fixAcceptor.Start(); } logger.Info("IniciarServico(): iniciando crontab Scheduler"); if (null == _cron) { _cron = new Util.CronStyleScheduler(); } _cron.Start(); logger.Info("*** IniciarServico(): FixServer inicializado..."); _dbFix = null; _status = ServicoStatus.EmExecucao; } catch (Exception ex) { logger.Error("Erro inicializacao: " + ex.Message, ex); throw ex; } }