Пример #1
0
 /// <summary>
 /// Start
 /// </summary>
 public static void Start()
 {
     _queueWatchTimers = new Timer[SqlSyncQueueNum];
     for (int i = 0; i < SqlSyncQueueNum; i++)
     {
         _queueWatchTimers[i] = new Timer(OnCheckSqlSyncQueue, i, 100, 100);
     }
     _threadPools = new SmartThreadPool(180 * 1000, 100, 5);
     _threadPools.Start();
 }
Пример #2
0
        /// <summary>
        /// 
        /// </summary>
        protected GameSocketHost()
        {
            ActionDispatcher = new ActionDispatcher();
            int port = GameEnvironment.Setting.GamePort;
            IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, port);

            int maxConnections = ConfigUtils.GetSetting("MaxConnections", 10000);
            int backlog = ConfigUtils.GetSetting("Backlog", 1000);
            int maxAcceptOps = ConfigUtils.GetSetting("MaxAcceptOps", 1000);
            int bufferSize = ConfigUtils.GetSetting("BufferSize", 8192);
            int expireInterval = ConfigUtils.GetSetting("ExpireInterval", 600) * 1000;
            int expireTime = ConfigUtils.GetSetting("ExpireTime", 3600) * 1000;

            threadPool = new SmartThreadPool(180 * 1000, 100, 5);
            threadPool.Start();

            var socketSettings = new SocketSettings(maxConnections, backlog, maxAcceptOps, bufferSize, localEndPoint, expireInterval, expireTime);
            socketLintener = new SocketListener(socketSettings);
            socketLintener.DataReceived += new ConnectionEventHandler(socketLintener_DataReceived);
            socketLintener.Connected += new ConnectionEventHandler(socketLintener_OnConnectCompleted);
            socketLintener.Disconnected += new ConnectionEventHandler(socketLintener_Disconnected);

            httpListener = new HttpListener();
            var httpHost = ConfigUtils.GetSetting("Game.Http.Host");
            var httpPort = ConfigUtils.GetSetting("Game.Http.Port", 80);
            var httpName = ConfigUtils.GetSetting("Game.Http.Name", "Service.aspx");

            if (!string.IsNullOrEmpty(httpHost))
            {
                EnableHttp = true;
                var hosts = httpHost.Split(',');
                foreach (var host in hosts)
                {
                    string address = host.StartsWith("http", StringComparison.InvariantCultureIgnoreCase)
                                         ? host
                                         : "http://" + host;
                    httpListener.Prefixes.Add(string.Format("{0}:{1}/{2}/", address, httpPort, httpName));
                }
            }
            Interlocked.Exchange(ref _runningQueue, 1);
            queueProcessThread = new Thread(ProcessQueue);
            queueProcessThread.Start();
            _LockedQueueChecker = new Timer(LockedQueueChecker, null, 100, 100);
        }
Пример #3
0
 /// <summary>
 /// Start
 /// </summary>
 /// <param name="setting"></param>
 public static void Start(CacheSetting setting)
 {
     _queueWatchTimers = new Timer[DataSyncQueueNum];
     for (int i = 0; i < DataSyncQueueNum; i++)
     {
         _queueWatchTimers[i] = new Timer(OnCheckRedisSyncQueue, i, 100, 100);
     }
     _threadPools = new SmartThreadPool(180 * 1000, 100, 5);
     _threadPools.Start();
     _enableWriteToDb = setting.EnableWriteToDb;
     if (_enableWriteToDb)
     {
         int sqlSyncInterval = ConfigUtils.GetSetting("Game.Cache.UpdateDbInterval", 300 * 1000);
         _sqlWaitTimers = new Timer[SqlWaitSyncQueueNum];
         for (int i = 0; i < SqlWaitSyncQueueNum; i++)
         {
             _sqlWaitTimers[i] = new Timer(OnCheckSqlWaitSyncQueue, i, 100, sqlSyncInterval);
         }
         SqlStatementManager.Start();
     }
 }