예제 #1
0
    static void Main(string[] args)
    {
        string file = "";

        if (args.Length >= 2 && args[0].Equals("-f") && args[1] != null)
        {
            file = args[1];
        }
        else
        {
            Console.WriteLine("usage: at" + " -f FILE [-t]");
            return;
        }

        SessionSettings  settings    = new SessionSettings(file);
        at_application   application = new at_application();
        FileStoreFactory factory     = new FileStoreFactory(settings);
        Acceptor         acceptor    = new SocketAcceptor
                                           (application, factory, settings, new DefaultMessageFactory());

        acceptor.start();
        while (true)
        {
            Thread.Sleep(1000);
        }
    }
예제 #2
0
파일: HostFix.cs 프로젝트: radtek/Gradual
        public void Parar()
        {
            // Log
            Gradual.OMS.Library.Log.EfetuarLog("HostFix-Parando1", LogTipoEnum.Passagem, "Gradual.OMS.Library");

            // Envia mensagem para aplicação
            this.AplicacaoFix.Parar();

            // Log
            Gradual.OMS.Library.Log.EfetuarLog("HostFix-Parando2", LogTipoEnum.Passagem, "Gradual.OMS.Library");

            // Para o socket
            if (this.EhInitiator)
            {
                _socketInitiator.stop();
                _socketInitiator.Dispose();
                _socketInitiator = null;
            }
            else
            {
                _socketAcceptor.stop();
                _socketAcceptor.Dispose();
                _socketAcceptor = null;
            }

            // Log
            Gradual.OMS.Library.Log.EfetuarLog("HostFix-Parando3", LogTipoEnum.Passagem, "Gradual.OMS.Library");
        }
예제 #3
0
        private void ConfigureInternal(OsServiceConfiguration configuration)
        {
            _serverConfiguration = new ServerConfiguration(configuration);

            _ivFactory = CreateRollingIvFactory();
            _acceptor  = CreateSocketAcceptor();
        }
예제 #4
0
        public virtual void PararServico()
        {
            logger.Info("Finalizando canal Bovespa");

            finalizarSinalizado = true;

            try
            {
                // Para o socket
                if (_config.Initiator)
                {
                    _socketInitiator.stop();
                    _socketInitiator.Dispose();
                    _socketInitiator = null;
                }
                else
                {
                    _socketAcceptor.stop();
                    _socketAcceptor.Dispose();
                    _socketAcceptor = null;
                }
            }
            catch (Exception ex)
            {
                logger.Error("Erro em PararServico():" + ex.Message, ex);
            }
            finally
            {
                _status = ServicoStatus.Parado;
            }


            logger.Info("*** Canal Bovespa finalizado ***");
        }
예제 #5
0
파일: HostFix.cs 프로젝트: radtek/Gradual
        public void Iniciar()
        {
            SessionSettings  settings = new SessionSettings(this.ArquivoConfiguracao);
            FileStoreFactory store    = new FileStoreFactory(settings);
            FileLogFactory   logs     = new FileLogFactory(settings);
            MessageFactory   msgs     = new DefaultMessageFactory();

            // Cria o socket
            if (this.EhInitiator)
            {
                _socketInitiator =
                    new SocketInitiator(
                        this.AplicacaoFix, store, settings, logs, msgs);
                _socketInitiator.start();
            }
            else
            {
                _socketAcceptor =
                    new SocketAcceptor(
                        this.AplicacaoFix, store, settings, logs, msgs);
                _socketAcceptor.start();
            }

            // Envia mensagem para aplicação
            this.AplicacaoFix.Iniciar();
        }
        public static void InitializeServer(string settingsPath)
        {
            try
            {
                _targetCompID_SessionCode   = new Dictionary <string, string>();
                _sessionCode_sessionDetails = new Dictionary <string, SessionInfo>();
                _sessionID_sessionCode      = new Dictionary <string, string>();
                _sessionsCodesToRep         = new List <string>();

                using (DataLayer.DatabaseMethods db = new DataLayer.DatabaseMethods())
                {
                    foreach (DataRow row in db.GetTable("FixSessionCode").Rows)
                    {
                        string targetCompID = row["TargetCompID"].ToString();
                        string code         = row["Code"].ToString();
                        bool   isRep        = Convert.ToBoolean(row["IsRep"]);
                        _targetCompID_SessionCode.Add(targetCompID, code);
                        if (isRep)
                        {
                            _sessionsCodesToRep.Add(code);
                        }
                    }
                }
                SessionSettings settings = new SessionSettings(settingsPath);
                _acceptor = new SocketAcceptor(new SvcFixServer(), new FileStoreFactory(settings), settings, new FileLogFactory(settings), new DefaultMessageFactory());
                _acceptor.start();
                SystemLogger.WriteOnConsoleAsync(true, string.Format("Fix Server Started Up !"), ConsoleColor.Green, ConsoleColor.Black, false);
            }
            catch (Exception e)
            {
                SystemLogger.WriteOnConsoleAsync(true, string.Format("InitializeServer Error, Error {0}", e.ToString()), ConsoleColor.Red, ConsoleColor.Black, true);
            }
        }
예제 #7
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("usage: executor_csharp FILE.");
                return;
            }

            try
            {
                SessionSettings  settings       = new SessionSettings(args[0]);
                Application      application    = new Application();
                FileStoreFactory storeFactory   = new FileStoreFactory(settings);
                ScreenLogFactory logFactory     = new ScreenLogFactory(settings);
                MessageFactory   messageFactory = new DefaultMessageFactory();
                SocketAcceptor   acceptor
                    = new SocketAcceptor(application, storeFactory, settings, logFactory, messageFactory);

                acceptor.start();
                Console.WriteLine("press <enter> to quit");
                Console.Read();
                acceptor.stop();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
예제 #8
0
    public async Task T00_Success()
    {
        var endPoint     = TestUtilities.GetEndPointOnRandomLoopbackPort();
        var serverSocket = Utilities.CreateSocket();

        serverSocket.Bind(endPoint);
        serverSocket.Listen(10);

        var acceptor     = new SocketAcceptor(serverSocket, SocketServerLogger);
        var ctsServer    = new CancellationTokenSource();
        var observable   = acceptor.CreateAcceptObservable(ctsServer.Token);
        var subscription = observable.Subscribe((x) =>
        {
            Logger.LogDebug("client");
        });

        var ctsClient = new CancellationTokenSource();
        var client    = await endPoint.CreateRxSocketClientAsync(SocketClientLogger, ctsClient.Token);

        Assert.True(client.Connected);

        await Task.Delay(100);

        //subscription.Dispose();
        //Assert.False(client.Connected);

        await client.DisposeAsync();
    }
예제 #9
0
  static void Main( string[] args )
  {
    if ( args.Length != 1 )
    {
      Console.WriteLine( "usage: executor_csharp FILE." );
      return ;
    }

    try
    {
      SessionSettings settings = new SessionSettings( args[ 0 ] );
      Application application = new Application();
      FileStoreFactory storeFactory = new FileStoreFactory( settings );
      ScreenLogFactory logFactory = new ScreenLogFactory( settings );
      MessageFactory messageFactory = new DefaultMessageFactory();
      SocketAcceptor acceptor
        = new SocketAcceptor( application, storeFactory, settings, logFactory, messageFactory );

      acceptor.start();
      Console.WriteLine("press <enter> to quit");
      Console.Read();
      acceptor.stop();
    }
    catch ( Exception e )
    {
      Console.WriteLine( e );
    }
  }
예제 #10
0
        public void Start()
        {
            SessionSettings  settings       = new SessionSettings(ConfigFileName);
            FileStoreFactory storeFactory   = new FileStoreFactory(settings);
            FileLogFactory   logFactory     = new FileLogFactory(settings);
            MessageFactory   messageFactory = new DefaultMessageFactory();

            this.acceptor = new SocketAcceptor(this, storeFactory, settings, logFactory /*optional*/, messageFactory);
            this.acceptor.start();
        }
예제 #11
0
        static void Main(string[] args)
        {
            try
            {
                SessionSettings      settings       = new SessionSettings(@"C:\Users\anhtv\Desktop\QuickFix\QuickFix\acceptor1.cfg");
                FixServerApplication application    = new FixServerApplication();
                FileStoreFactory     storeFactory   = new FileStoreFactory(settings);
                ScreenLogFactory     logFactory     = new ScreenLogFactory(settings);
                MessageFactory       messageFactory = new DefaultMessageFactory();
                SocketAcceptor       acceptor       = new SocketAcceptor(application, storeFactory, settings, logFactory, messageFactory);

                acceptor.start();
                Console.WriteLine("press enter to quit");
                Console.Read();
                acceptor.stop();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
예제 #12
0
 public bool Start(string user, string pw)
 {
     try
     {
         SessionSettings  settings       = new SessionSettings(_setpath);
         Application      application    = this;
         FileStoreFactory storeFactory   = new FileStoreFactory(settings);
         FileLogFactory   logFactory     = new FileLogFactory(settings);
         MessageFactory   messageFactory = new DefaultMessageFactory();
         acceptor = new SocketAcceptor
                        (application, storeFactory, settings, logFactory /*optional*/, messageFactory);
         acceptor.start();
         _val = true;
         return(true);
     }
     catch (Exception ex)
     {
         debug("exception starting server: " + ex.Message + ex.StackTrace);
         _val = false;
     }
     return(false);
 }
예제 #13
0
  static void Main(string[] args)
  {
    string file = "";

    if( args.Length >= 2 && args[0].Equals("-f") && args[1] != null ) 
    {
      file = args[1];
	  }
    else 
    {
      Console.WriteLine( "usage: at" + " -f FILE [-t]" );
      return;
	  }

    SessionSettings settings = new SessionSettings(file);
    at_application application = new at_application();
    FileStoreFactory factory = new FileStoreFactory(settings);
    Acceptor acceptor = new SocketAcceptor
        ( application, factory, settings, new DefaultMessageFactory() );
    acceptor.start();
    while( true ) Thread.Sleep( 1000 );
  }
예제 #14
0
        static void Main(string[] args)
        {
            AppLogger = new PerDayFileLogSource(Directory.GetCurrentDirectory() + "\\Log", Directory.GetCurrentDirectory() + "\\Log\\Backup")
            {
                FilePattern = "Log.{0:yyyy-MM-dd}.log",
                DeleteDays  = 20
            };

            string path = ConfigurationManager.AppSettings["AcceptorPath"];

            SessionSettings  = new SessionSettings(path);
            FileStoreFactory = new FileStoreFactory(SessionSettings);
            ScreenLogFactory = new ScreenLogFactory(SessionSettings);
            MessageFactory   = new DefaultMessageFactory();

            Program myProgram = new Program();

            Acceptor = new SocketAcceptor(myProgram, FileStoreFactory, SessionSettings, ScreenLogFactory, MessageFactory);

            Acceptor.start();

            Console.WriteLine("Acceptor successfully started...");
            Console.ReadKey();
        }
예제 #15
0
 public void setClientAcceptor(SocketAcceptor acceptor)
 {
     CLIENTAcceptor = acceptor;
 }
예제 #16
0
        static void Main(string[] args)
        {
            try
            {
                //设置控制台的显示样式
                Console.ForegroundColor = ConsoleColor.Green;
                //Console.ResetColor();
                //Console.Clear();

                //copy right
                Console.WriteLine("wdmir.com   2003-2015");
                Console.WriteLine("www.silverFoxServer.net 2009-2015");

                //语言
                //mono不支持Culture
                //"zh-CN";
                GameGlobals.lang = System.Globalization.CultureInfo.InstalledUICulture.Name;

                //test
                //GameGlobals.lang = "zh-HK";

                SR.init(GameGlobals.lang);

                //3.1版本 - 澳门风云
                Console.Title = SR.GetString(SR.Win_Title, SR.Ddz_displayName, "3.2", "2015/8/28");//"2014/2/10");

                if (args.Length > 0 && args[0] == "nowin")
                {
                    IntPtr ParenthWnd = new IntPtr(0);
                    IntPtr et         = new IntPtr(0);
                    ParenthWnd = FindWindow(null, Console.Title);

                    ShowWindow(ParenthWnd, 0);//隐藏本dos窗体, 0: 后台执行;1:正常启动;2:最小化到任务栏;3:最大化
                }

                //
                GameGlobals.GAME_NAME = GAME_NAME;

                //Console.WriteLine("[Boot] " + Globals.svrName + " Server");

                Console.WriteLine(

                    SR.GetString(SR.BootSvr, SR.Ddz_displayName)

                    );

                //读取xml配置
                XmlDocument configDoc = new XmlDocument();

                //获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。
                //string str = System.Environment.CurrentDirectory;
                //该程序如果由另一程序启动,则会有问题,获得的是另一程序的启动路径

                //
                string appFileName = System.AppDomain.CurrentDomain.FriendlyName.ToLower();
                //Console.WriteLine(appName);

                string configFileName = string.Empty;

                configFileName = "DdzServerConfig.xml";

                //if (appFileName.IndexOf(".vshost.exe") >= 0)
                //{
                //    configFileName = "DdzServerConfig.xml";

                //}
                //else if (appFileName == "ddzserver.exe")
                //{
                //    configFileName = "DdzServerConfig.xml";

                //}
                //else if (appFileName == "ddzserver2.exe")
                //{
                //    configFileName = "DdzServerConfig2.xml";

                //}
                //else if (appFileName == "ddzserver3.exe")
                //{
                //    configFileName = "DdzServerConfig3.xml";

                //}

                //
                //Console.WriteLine("[Load File] " + System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + configFileName);

                Console.WriteLine(

                    SR.GetString(SR.LoadFile,
                                 System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + configFileName)

                    );


                configDoc.Load(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + configFileName);


                //IP信息
                XmlNode node = configDoc.SelectSingleNode("/www.wdmir.net/group/main-server");

                if (null == node)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(SR.GetString(SR.Can_not_find_node, "/www.wdmir.net/group/main-server"));
                    Console.ForegroundColor = ConsoleColor.Green;
                }

                string ipAdr = node.ChildNodes[0].InnerText;

                int port = int.Parse(node.ChildNodes[1].InnerText);

                //房间信息
                XmlNode tabNode = configDoc.SelectSingleNode("/www.wdmir.net/group/main-server/tabList");

                //
                int tabNum = tabNode.ChildNodes.Count;
                List <ITabModel> tabList = new List <ITabModel>();


                int k = 0;
                //房间名字
                int j = 0;

                //ChildNodes
                int index = 0;

                for (k = 0; k < tabNum; k++)
                {
                    TabModelByDdz Tab = (TabModelByDdz)TabModelFactory.Create(k);

                    //房间数量负数没有意义
                    XmlNode e = tabNode.ChildNodes[index];

                    Tab.setTabName(e.Attributes["n"].Value);

                    int size = e.ChildNodes.Count;    //e.getChildren().size();

                    Tab.setRoomCount(size);

                    //房间底分

                    Tab.setRoomG(Convert.ToInt32(e.Attributes["g"].Value));

                    //最少携带不需要警告
                    Tab.setRoomCarryG(Convert.ToInt32(e.Attributes["carryG"].Value));

                    //每局花费
                    Tab.setRoomCostG(float.Parse(e.Attributes["costG"].Value));

                    //自动匹配模式开启
                    Tab.setTabAutoMatchMode(Convert.ToInt32(e.Attributes["autoMatchMode"].Value));

                    //快速场模式开启
                    Tab.setQuickMode(Convert.ToInt32(e.Attributes["quickMode"].Value));

                    //自动匹配根据Logic设计规则,至少需要2个房间,
                    //否则只有1个房间,换房间时会进入无限等待
                    if (1 == Tab.getTabAutoMatchMode() && 1 == Tab.getRoomCount())
                    {
                        Console.WriteLine(SR.GetString(SR.getRoom_auto_match_mode_and_room_num_less_2(), "Tab " + index.ToString()));
                    }

                    int roomCount = Tab.getRoomCount();
                    for (j = 0; j < roomCount; j++)
                    {
                        Tab.getRoomName()[j] = e.ChildNodes[j].Attributes["n"].Value;

                        //e.getChildren().get(j).getAttributeValue("n");
                    }

                    //check
                    //
                    if (0 >= Tab.getRoomCount())
                    {
                        Console.WriteLine(SR.GetString(SR.getRoom_num_zero(), "Tab " + index.ToString()));
                    }

                    if (1 <= Tab.getRoomCostG())
                    {
                        Console.WriteLine(SR.GetString(SR.getRoom_costG_more_than_1(), "Tab " + index.ToString()));
                        Tab.setRoomCostG(0.0f);
                    }

                    //
                    tabList.Add(Tab);

                    index++;
                }



                //安全域
                string allowAccessFromDomain = node.ChildNodes[4].InnerText;

                if ("" == allowAccessFromDomain)
                {
                    allowAccessFromDomain = "*";
                }

                //是否允许负分
                string allowPlayerGlessThanZeroOnGameOverStr = node.ChildNodes[5].InnerText;

                bool allowPlayerGlessThanZeroOnGameOver = false;

                if ("no" == allowPlayerGlessThanZeroOnGameOverStr.ToLower())
                {
                    allowPlayerGlessThanZeroOnGameOver = false;
                    //Console.WriteLine("提示:游戏扣分时会出现负分已关闭");

                    Console.WriteLine(SR.GetString(SR.Allow_playerG_less_than_zero_on_game_over));
                }
                else
                {
                    allowPlayerGlessThanZeroOnGameOver = true;
                }

                //打印级别
                int logLevel = int.Parse(node.ChildNodes[6].InnerText);

                if (0 == logLevel)
                {
                    GameGlobals.logLvl = LoggerLvl.CLOSE0;
                }
                else if (1 == logLevel)
                {
                    GameGlobals.logLvl = LoggerLvl.NORMAL1;
                }
                else
                {
                    logLevel           = 2;
                    GameGlobals.logLvl = LoggerLvl.ALL2;
                }

                //
                Log.init(GameGlobals.GAME_NAME, GameGlobals.logLvl);

                //cost扣下来的钱存入指定帐号
                string costUser = node.ChildNodes[7].InnerText;

                if ("" == costUser)
                {
                    costUser = "******";
                    //Console.WriteLine("提示:未指定每局花费的存入帐号,默认设为admin");
                    Console.WriteLine(
                        SR.GetString(SR.Cost_default_set_to_admin)
                        );
                }

                //
                string payUser = GameGlobals.payUser = node.ChildNodes[8].InnerText;

                //
                int runAwayMultiG = Convert.ToInt32(node.ChildNodes[9].InnerText);

                int reconnectionTime = Convert.ToInt32(node.ChildNodes[10].InnerText);

                //15秒是快牌场的的出牌时间
                if (reconnectionTime < 30)
                {
                    Console.WriteLine(SR.Room_reconnection_time_less_than_15);
                    reconnectionTime = 30;
                }

                int everyDayLogin = Convert.ToInt32(node.ChildNodes[11].InnerText);

                //其它模块
                XmlNode omNode = configDoc.SelectSingleNode("/www.wdmir.net/group/main-server/other-modules/turn-over-a-card");

                if (null == omNode)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(SR.GetString(SR.Can_not_find_node, "/www.wdmir.net/group/main-server/other-modules/turn-over-a-card"));
                    Console.ForegroundColor = ConsoleColor.Green;
                }

                int turnOver_a_Card_module_run = Convert.ToInt32(omNode.Attributes["run"].Value);

                Int64 turnOver_a_Card_module_g1 = Convert.ToInt64(omNode.Attributes["g1"].Value);
                Int64 turnOver_a_Card_module_g2 = Convert.ToInt64(omNode.Attributes["g2"].Value);
                Int64 turnOver_a_Card_module_g3 = Convert.ToInt64(omNode.Attributes["g3"].Value);

                float turnOver_a_Card_costG = float.Parse(omNode.Attributes["costG"].Value);

                if (0 == turnOver_a_Card_module_run)
                {
                    //关闭
                }
                else
                {
                    Console.WriteLine(

                        SR.GetString(SR.LoadModulesAndStart,
                                     SR.TurnOver_a_Card_module_displayName
                                     )

                        );
                }

                //
                if (0 >= turnOver_a_Card_module_g1)
                {
                    Console.WriteLine(SR.GetString(SR.TurnOver_a_Card_module_g_zero, "g1"));
                }

                if (0 >= turnOver_a_Card_module_g2)
                {
                    Console.WriteLine(SR.GetString(SR.TurnOver_a_Card_module_g_zero, "g2"));
                }

                if (0 >= turnOver_a_Card_module_g3)
                {
                    Console.WriteLine(SR.GetString(SR.TurnOver_a_Card_module_g_zero, "g3"));
                }

                //
                XmlNode rcNode = configDoc.SelectSingleNode("/www.wdmir.net/group/main-server/record-server");

                if (null == rcNode)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(SR.GetString(SR.getCan_not_find_node(), "/www.wdmir.net/group/main-server/record-server"));
                    Console.ForegroundColor = ConsoleColor.Green;
                }

                String connect_ipAdr2 = rcNode.ChildNodes[0].InnerText;
                int    connect_port2  = Convert.ToInt32(rcNode.ChildNodes[1].InnerText);
                String proof          = rcNode.ChildNodes[2].InnerText;

                //Console.WriteLine("[Load File] OK");

                Console.WriteLine(SR.GetString(SR.getLoadFileSuccess()));

                //读取聊天过滤字符配置
                XmlDocument filterWordDoc = new XmlDocument();

                //Console.WriteLine("[Load File] " + System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "FilterWordConfig.xml");

                Console.WriteLine(

                    SR.GetString(SR.LoadFile,
                                 System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "FilterWordConfig.xml")

                    );


                filterWordDoc.Load(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "FilterWordConfig.xml");

                XmlNode filterLvl = filterWordDoc.SelectSingleNode("/www.wdmir.net/pubmsg-filter-level");

                if (null == filterLvl)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(SR.GetString(SR.getCan_not_find_node(), "/www.wdmir.net/pubmsg-filter-level"));
                    Console.ForegroundColor = ConsoleColor.Green;
                }

                XmlNode filterNode = filterWordDoc.SelectSingleNode("/www.wdmir.net/pubmsg-filter-word");

                if (null == filterNode)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(SR.GetString(SR.getCan_not_find_node(), "/www.wdmir.net/pubmsg-filter-word"));
                    Console.ForegroundColor = ConsoleColor.Green;
                }

                XmlNode filterMakeupNode = filterWordDoc.SelectSingleNode("/www.wdmir.net/pubmsg-filter-makeup-word");

                if (null == filterNode)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(SR.GetString(SR.getCan_not_find_node(), "/www.wdmir.net/pubmsg-filter-makeup-word"));
                    Console.ForegroundColor = ConsoleColor.Green;
                }


                FilterWordManager.init(
                    filterLvl.ChildNodes[0].InnerText,
                    filterNode.ChildNodes[0].InnerText,
                    filterMakeupNode.ChildNodes[0].InnerText);


                Console.WriteLine(
                    SR.GetString(SR.LoadFileSuccess)
                    );

                //处理类初始化
                //处理类初始化
                DdzLogic.getInstance().init(tabNode, tabList, costUser, allowPlayerGlessThanZeroOnGameOver, runAwayMultiG, reconnectionTime, everyDayLogin);
                //模块初始化
                DdzLogic.getInstance().init_modules(costUser, turnOver_a_Card_module_run, turnOver_a_Card_module_g1, turnOver_a_Card_module_g2, turnOver_a_Card_module_g3, turnOver_a_Card_costG);

                DdzRCLogic.getInstance().init(DdzLogic.getInstance());

                //
                DdzLPU.init();

                //如果是连接DB的Connector,可能需要设置证书
                SocketConnector connector = new SocketConnector(proof);

                connector.setHandler(new DdzRCClientHandler());

                //与数据库的连接bufSize要大点
                //默认的1024 * 8
                connector.getSessionConfig().setReadBufferSize(1024 * 4);


                //使用了reuse,现半小时调为0
                connector.getSessionConfig().setReceiveTimeout(0);


                //
                SocketAcceptor acceptor = new SocketAcceptor(payUser, GAME_NAME, allowAccessFromDomain, true);

                acceptor.setHandler(new DdzGameClientHandler());


                //处理类引用connector
                //只可调用connector的send方法
                DdzLogic.getInstance().setRCConnector(connector);
                DdzLogic.getInstance().setClientAcceptor(acceptor);

                //首先启动对内网的数据库服务的连接
                connector.connect("127.0.0.1", 9500);

                //最后启动外网侦听
                acceptor.bind("Any", port, false);

                //对于post builder,这里要加ReadLine
                string line;
                while ((line = Console.ReadLine()) != SR.Shutdown)
                {
                    if (null == line)
                    {
                        //break;
                    }
                    else if (line == "shutdown")
                    {
                        break;
                    }
                    else if (line == "clear")
                    {
                        Console.Clear();
                    }
                    else if (line == "port")
                    {
                        Console.WriteLine(port);
                    }
                    else
                    {
                        Console.WriteLine("unknow command");
                    }

                    //Console.WriteLine("run command:" + line);
                }

                //Console.ReadLine();
            }
            catch (Exception exd)
            {
                Console.ForegroundColor = ConsoleColor.Red;

                Console.WriteLine(SR.GetString(SR.Game_svr_start_failed, exd.Message));
                Console.ForegroundColor = ConsoleColor.Green;

                Console.WriteLine(SR.GetString(SR.Game_svr_failed_help));

                Console.WriteLine("email:[email protected]");

                Console.ReadLine();
            }
        }
예제 #17
0
        public virtual void IniciarServico()
        {
            logger.Info("IniciarServico(): iniciando canal Bovespa ....");

            // Carrega configurações
            _config = GerenciadorConfig.ReceberConfig <CanalNegociacaoConfig>();

            // Cria sessao que será usada para mandar as mensagens
            _session =
                new SessionID(
                    new BeginString(_config.BeginString),
                    new SenderCompID(_config.SenderCompID),
                    new TargetCompID(_config.TargetCompID));


            // Cria dicionario da configuracao
            Dictionary mainDic = new Dictionary();

            if (_config.SocketAcceptPort > 0)
            {
                mainDic.setLong("SocketAcceptPort", _config.SocketAcceptPort);
            }
            mainDic.setLong("SocketConnectPort", _config.SocketConnectPort);
            mainDic.setLong("HeartBtInt", _config.HeartBtInt);
            mainDic.setLong("ReconnectInterval", _config.ReconnectInterval);

            mainDic.setBool("ResetOnLogon", _config.ResetSeqNum);
            mainDic.setBool("PersistMessages", _config.PersistMessages);

            // Ver
            // ret.setString("ConnectionType", ConnectionType.ToLower());
            mainDic.setString("SocketConnectHost", _config.Host);
            mainDic.setString("FileStorePath", _config.FileStorePath);

            logger.Debug("FileLogPath: " + _config.FileLogPath);
            mainDic.setString("FileLogPath", _config.FileLogPath);
            mainDic.setString("StartTime", _config.StartTime);
            mainDic.setString("EndTime", _config.EndTime);
            if (_config.Initiator)
            {
                mainDic.setString("ConnectionType", "initiator");
            }
            else
            {
                mainDic.setString("ConnectionType", "acceptor");
            }

            Dictionary sessDic = new Dictionary();

            sessDic.setString("BeginString", _config.BeginString);
            sessDic.setString("SenderCompID", _config.SenderCompID);
            sessDic.setString("TargetCompID", _config.TargetCompID);
            sessDic.setString("DataDictionary", _config.DataDictionary);
            sessDic.setBool("UseDataDictionary", true);


            // Configure the session settings
            SessionSettings settings = new SessionSettings();

            settings.set(mainDic);
            settings.set(_session, sessDic);

            FileStoreFactory store = new FileStoreFactory(settings);
            FileLogFactory   logs  = new FileLogFactory(settings);

            QuickFix.MessageFactory msgs = new DefaultMessageFactory();

            // Cria o socket
            if (_config.Initiator)
            {
                _socketInitiator = new SocketInitiator(this, store, settings, logs, msgs);
                _socketInitiator.start();
            }
            else
            {
                _socketAcceptor = new SocketAcceptor(this, store, settings, logs, msgs);
                _socketAcceptor.start();
            }

            _status = ServicoStatus.EmExecucao;

            logger.Info("IniciarServico(): canal Bovespa em execucao....");
        }
예제 #18
0
 public bool Start(string user, string pw)
 {
     try
     {
         SessionSettings settings = new SessionSettings(_setpath);
         Application application = this;
         FileStoreFactory storeFactory = new FileStoreFactory(settings);
         FileLogFactory logFactory = new FileLogFactory(settings);
         MessageFactory messageFactory = new DefaultMessageFactory();
         acceptor = new SocketAcceptor
           (application, storeFactory, settings, logFactory /*optional*/, messageFactory);
         acceptor.start();
         _val = true;
         return true;
     }
     catch (Exception ex)
     {
         debug("exception starting server: " + ex.Message + ex.StackTrace);
         _val = false;
     }
     return false;
 }