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; }
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))); }