示例#1
0
        public Scheduler(Dispatcher dispatcher)
        {
            if (dispatcher == null)
                throw new ArgumentNullException("dispatcher");

            _dispatcher = dispatcher;
            _lock = new object();
            _state = SchedulerState.Terminated;
            _queue = new PriorityQueue<Schedule>();
            _lastScheduletId = 0;
            _scheduleIds = new HashSet<uint>();
            _lastScheduletId = Constants.SchedulerStartId;
        }
示例#2
0
        public void Start()
        {
            _dispatcher = new Dispatcher();
            _scheduler = new Scheduler(_dispatcher);

            _dispatcher.Start();
            _scheduler.Start();

            _configManager = new ConfigManager(this);

            ItemType.Load(@"Data\items\items.otb");

            _connectionFactory = new PostgresConnectionFactory();
            _accountRepository = new AccountRepository(_connectionFactory);
            _playerRepository = new PlayerRepository(_connectionFactory);

            _world = new World(this);

            _world.Map.Load(@"Data\world\map.otbm");

            _outputMessagePool = new OutputMessagePool(10, 100);
            _dispatcher.AfterDispatchTask += _outputMessagePool.ProcessEnqueueMessages;

            _serviceManager = new ServiceManager(this);

            _serviceManager.Add<LoginProtocol>(_configManager.LoginPort);
            _serviceManager.Add<GameProtocol>(_configManager.GamePort);

            Logger.Info(string.Format("Local ip address: {0}", String.Join(" ", _serviceManager.PrivateIpAddresses)));
            Logger.Info(string.Format("Global ip address: {0}", String.Join(" ", _serviceManager.PublicIpAddresses)));
        }