public NecServer(NecSetting setting) { Setting = setting; Router = new PacketRouter(); _authConsumer = new NecQueueConsumer(Setting); _authConsumer.SetIdentity("Auth"); _msgConsumer = new NecQueueConsumer(Setting); _msgConsumer.SetIdentity("Msg"); _areaConsumer = new NecQueueConsumer(Setting); _areaConsumer.SetIdentity("Area"); _authServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.AuthPort, _authConsumer ); _msgServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.MsgPort, _msgConsumer ); _areaServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.AreaPort, _areaConsumer ); LoadHandler(); }
public void TestBuild() { /* Confirm successful build with currently configured database. */ NecSetting settings = new NecSetting(); new NecDatabaseBuilder().Build(settings.DatabaseSettings); }
public RecvMapChangeForce(Map map, MapPosition mapPosition, NecSetting setting) : base((ushort)AreaPacketId.recv_map_change_force, ServerType.Area) { _map = map; _mapPosition = mapPosition; _setting = setting; }
public Program(string[] args) { _consoleLock = new object(); LogProvider.GlobalLogWrite += LogProviderOnGlobalLogWrite; if (args.Length == 2) { FpmfArchiveIO archiveIO = new FpmfArchiveIO(); FpmfArchive archive = archiveIO.Open(args[0]); archiveIO.Save(archive, args[1]); return; } if (args.Length == 1) { FpmfArchiveIO archiveIO = new FpmfArchiveIO(); archiveIO.OpenWoItm(args[0]); return; } NecSetting setting = new NecSetting(); LogProvider.Configure <NecLogger>(setting); NecServer server = new NecServer(setting); server.Start(); Console.WriteLine("Press any key to exit.."); Console.ReadKey(); server.Stop(); }
public override void Initialize(string identity, string name, Action <Log> write, object configuration) { base.Initialize(identity, name, write, configuration); _setting = configuration as NecSetting; if (_setting == null) { Error("Couldn't apply NecLogger configuration"); } }
public NecDatabaseBuilder(NecSetting setting, SettingRepository settingRepository = null) { _setting = setting; _settingRepository = settingRepository; if (_settingRepository == null) { _settingRepository = new SettingRepository(_setting.repositoryFolder).Initialize(); } }
public NecQueueConsumer(ServerType serverType, NecSetting setting, AsyncEventSettings socketSetting) : base( socketSetting, serverType.ToString()) { _serverType = serverType; _setting = setting; _lock = new object(); _clientHandlers = new Dictionary <int, IClientHandler>(); _connectionHandlers = new Dictionary <int, IConnectionHandler>(); _connections = new Dictionary <ITcpSocket, NecConnection>(); }
public NecQueueConsumer(NecSetting setting) { _setting = setting; _logger = LogProvider.Logger <NecLogger>(this); _maxUnitOfOrder = 2; // TODO read from setting _queues = new BlockingCollection <ClientEvent> [_maxUnitOfOrder]; _threads = new Thread[_maxUnitOfOrder]; _lock = new object(); _handlers = new Dictionary <int, IHandler>(); _clients = new Dictionary <ITcpSocket, NecClient>(); _identity = ""; }
public NecromancyBot(NecSetting setting) { _ready = false; _setting = setting; _cancellationTokenSource = new CancellationTokenSource(); _assemblies = new List <Assembly>(); _collection = new ServiceCollection(); _collection .AddSingleton <CommandService>() .AddSingleton <DiscordSocketClient>() .AddSingleton <CommandHandlingService>(); }
public NecServer(NecSetting setting) { _running = false; Setting = new NecSetting(setting); NecromancyBot = new NecromancyBot(setting); NecromancyBot.AddSingleton(this); Instances = new InstanceGenerator(); Instances64 = new InstanceGenerator64(); Clients = new ClientLookup(); Characters = new CharacterLookup(); Maps = new MapLookup(); Chat = new ChatManager(this); Router = new PacketRouter(); Database = new NecDatabaseBuilder().Build(Setting.DatabaseSettings); SettingRepository = new SettingRepository(Setting.RepositoryFolder).Initialize(); _authConsumer = new NecQueueConsumer(ServerType.Auth, Setting, Setting.AuthSocketSettings); _authConsumer.ClientDisconnected += AuthClientDisconnected; _msgConsumer = new NecQueueConsumer(ServerType.Msg, Setting, Setting.MsgSocketSettings); _msgConsumer.ClientDisconnected += MsgClientDisconnected; _areaConsumer = new NecQueueConsumer(ServerType.Area, Setting, Setting.AreaSocketSettings); _areaConsumer.ClientDisconnected += AreaClientDisconnected; _authServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.AuthPort, _authConsumer, Setting.AuthSocketSettings ); _msgServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.MsgPort, _msgConsumer, Setting.MsgSocketSettings ); _areaServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.AreaPort, _areaConsumer, Setting.AreaSocketSettings ); LoadChatCommands(); LoadSettingRepository(); LoadHandler(); LoadCharacterRepository(); }
private string MakeSqLiteConnectionString() { //TODO move info to resources SQLiteConnectionStringBuilder sqLiteConnStrBuilder = new SQLiteConnectionStringBuilder(); string settingFile = "server_setting.json"; SettingProvider settingProvider = new SettingProvider(); NecSetting setting = settingProvider.Load <NecSetting>(settingFile); string sqLitePath = Path.Combine(setting.databaseSettings.sqLiteFolder, "db.sqlite"); sqLiteConnStrBuilder.DataSource = sqLitePath; sqLiteConnStrBuilder.Version = 3; sqLiteConnStrBuilder.Pooling = true; sqLiteConnStrBuilder.ForeignKeys = true; sqLiteConnStrBuilder.Flags = sqLiteConnStrBuilder.Flags & SQLiteConnectionFlags.StrictConformance; return(sqLiteConnStrBuilder.ConnectionString); }
public NecServer(NecSetting setting) { _running = false; this.setting = new NecSetting(setting); necromancyBot = new NecromancyBot(this.setting); necromancyBot.AddSingleton(this); instances = new InstanceGenerator(this); clients = new ClientLookup(); maps = new MapLookup(); chat = new ChatManager(this); router = new PacketRouter(); settingRepository = new SettingRepository(this.setting.repositoryFolder).Initialize(); database = new NecDatabaseBuilder(this.setting, settingRepository).Build(); _authConsumer = new NecQueueConsumer(ServerType.Auth, this.setting, this.setting.authSocketSettings); _authConsumer.clientDisconnected += AuthClientDisconnected; _msgConsumer = new NecQueueConsumer(ServerType.Msg, this.setting, this.setting.msgSocketSettings); _msgConsumer.clientDisconnected += MsgClientDisconnected; _areaConsumer = new NecQueueConsumer(ServerType.Area, this.setting, this.setting.areaSocketSettings); _areaConsumer.clientDisconnected += AreaClientDisconnected; _authServer = new AsyncEventServer( this.setting.listenIpAddress, this.setting.authPort, _authConsumer, this.setting.authSocketSettings ); _msgServer = new AsyncEventServer( this.setting.listenIpAddress, this.setting.msgPort, _msgConsumer, this.setting.msgSocketSettings ); _areaServer = new AsyncEventServer( this.setting.listenIpAddress, this.setting.areaPort, _areaConsumer, this.setting.areaSocketSettings ); LoadChatCommands(); LoadDatabaseObjects(); LoadHandler(); }
public InstanceGenerator(NecServer server) { _setting = server.setting; _server = server; _pools = new List <IInstanceIdPool>(); _instances = new Dictionary <uint, IInstance>(); _dynamicPool = new InstanceIdPool("Dynamic", _setting.poolDynamicIdLowerBound, _setting.poolDynamicIdSize); _pools.Add(_dynamicPool); _characterPool = new DatabaseInstanceIdPool("Character", _setting.poolCharacterIdLowerBound, _setting.poolCharacterIdSize); _pools.Add(_characterPool); _npcPool = new DatabaseInstanceIdPool("Npc", _setting.poolNpcLowerBound, _setting.poolNpcIdSize); _pools.Add(_npcPool); _monsterPool = new DatabaseInstanceIdPool("Monster", _setting.poolMonsterIdLowerBound, _setting.poolMonsterIdSize); _pools.Add(_monsterPool); _deadBodyPool = new DatabaseInstanceIdPool("DeadBody", _setting.poolDeadBodyIdLowerBound, _setting.poolDeadBodyIdSize); _pools.Add(_deadBodyPool); foreach (IInstanceIdPool pool in _pools) { foreach (IInstanceIdPool otherPool in _pools) { if (pool == otherPool) { continue; } if (pool.lowerBound <= otherPool.upperBound && otherPool.lowerBound <= pool.upperBound) { _Logger.Error( $"Pool: {pool.name}({pool.lowerBound}-{pool.upperBound}) overlaps with Pool {otherPool.name}({otherPool.lowerBound}-{otherPool.upperBound})"); } } } LogStatus(); }
public NecServer(NecSetting setting) { ClientLookup = new ClientLookup(); MapLookup = new MapLookup(); Setting = setting; Router = new PacketRouter(); _authConsumer = new NecQueueConsumer(Setting); _authConsumer.SetIdentity("Auth"); _authConsumer.ClientDisconnected += AuthClientDisconnected; _msgConsumer = new NecQueueConsumer(Setting); _msgConsumer.SetIdentity("Msg"); _msgConsumer.ClientDisconnected += MsgClientDisconnected; _areaConsumer = new NecQueueConsumer(Setting); _areaConsumer.SetIdentity("Area"); _areaConsumer.ClientDisconnected += AreaClientDisconnected; _authServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.AuthPort, _authConsumer ); _msgServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.MsgPort, _msgConsumer ); _areaServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.AreaPort, _areaConsumer ); LoadHandler(); }
public PacketFactory(NecSetting setting) { _setting = setting; Reset(); }
public RecvBaseSelectWorld(NecSetting necSetting) : base((ushort)AuthPacketId.recv_base_select_world_r, ServerType.Auth) { _necSetting = necSetting; }
public override CommandResultType Handle(ConsoleParameter parameter) { if (_server == null) { SettingProvider settingProvider = new SettingProvider(); NecSetting setting = settingProvider.Load <NecSetting>(SETTING_FILE); if (setting == null) { Logger.Info($"No `{SETTING_FILE}` file found, creating new"); setting = new NecSetting(); settingProvider.Save(setting, SETTING_FILE); } else { Logger.Info($"Loaded Setting from: {settingProvider.GetSettingsPath(SETTING_FILE)}"); } SettingProvider secretsProvider = new SettingProvider(setting.secretsFolder); NecSecret secret = secretsProvider.Load <NecSecret>(SECRET_FILE); if (secret == null) { Logger.Info($"No `{SECRET_FILE}` file found, creating new"); secret = new NecSecret(); secretsProvider.Save(secret, SECRET_FILE); } else { Logger.Info($"Loaded Secrets from: {secretsProvider.GetSettingsPath(SECRET_FILE)}"); } setting.discordBotToken = secret.discordBotToken; setting.databaseSettings.password = secret.databasePassword; LogProvider.Configure <NecLogger>(setting); _server = new NecServer(setting); } if (parameter.arguments.Contains("start")) { _server.Start(); if (_service) { while (_server.running) { Thread.Sleep(TimeSpan.FromMinutes(5)); } return(CommandResultType.Exit); } return(CommandResultType.Completed); } if (parameter.arguments.Contains("stop")) { _server.Stop(); return(CommandResultType.Completed); } return(CommandResultType.Continue); }
public PacketFactory(NecSetting setting) { _logger = LogProvider.Logger <NecLogger>(this); _setting = setting; Reset(); }