Пример #1
0
        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);
        }
Пример #2
0
        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;
            }
        }