/// <summary> /// Initializes the <see cref="EventCounterManager"/> class. /// </summary> static EventCounterManager() { // Create a dedicated dbController for the EventCounters since they are all executed in non-blocking mode, // none of the queries touch the normal game tables, and none of the queries do not rely on order of execution var dbConnSettings = new DbConnectionSettings(); var dbController = new ServerDbController(dbConnSettings.GetMySqlConnectionString()); // Create the query objects var pool = dbController.ConnectionPool; var userECQuery = EventCounterHelper.CreateQuery <CharacterID, UserEventCounterType>(pool, EventCountersUserTable.TableName, "user_id", "user_event_counter_id"); var guildECQuery = EventCounterHelper.CreateQuery <GuildID, GuildEventCounterType>(pool, EventCountersGuildTable.TableName, "guild_id", "guild_event_counter_id"); var shopECQuery = EventCounterHelper.CreateQuery <ShopID, ShopEventCounterType>(pool, EventCountersShopTable.TableName, "shop_id", "shop_event_counter_id"); var mapECQuery = EventCounterHelper.CreateQuery <MapID, MapEventCounterType>(pool, EventCountersMapTable.TableName, "map_id", "map_event_counter_id"); var questECQuery = EventCounterHelper.CreateQuery <QuestID, QuestEventCounterType>(pool, EventCountersQuestTable.TableName, "quest_id", "quest_event_counter_id"); var itemTemplateECQuery = EventCounterHelper.CreateQuery <ItemTemplateID, ItemTemplateEventCounterType>(pool, EventCountersItemTemplateTable.TableName, "item_template_id", "item_template_event_counter_id"); var npcECQuery = EventCounterHelper.CreateQuery <CharacterTemplateID, NPCEventCounterType>(pool, EventCountersNpcTable.TableName, "npc_template_id", "npc_event_counter_id"); // Create the event counters _userEventCounter = new EventCounter <CharacterID, UserEventCounterType>(userECQuery); _guildEventCounter = new EventCounter <GuildID, GuildEventCounterType>(guildECQuery); _shopEventCounter = new EventCounter <ShopID, ShopEventCounterType>(shopECQuery); _mapEventCounter = new EventCounter <MapID, MapEventCounterType>(mapECQuery); _questEventCounter = new EventCounter <QuestID, QuestEventCounterType>(questECQuery); _itemTemplateEventCounter = new EventCounter <ItemTemplateID, ItemTemplateEventCounterType>(itemTemplateECQuery); _npcEventCounter = new EventCounter <CharacterTemplateID, NPCEventCounterType>(npcECQuery); }
/// <summary> /// Creates a new DbController instance if one does not already exist. Do not use this to just acquire a DbController instance when one may already exist - /// use DbControllerBase.GetInstance() instead. /// </summary> /// <returns></returns> public static ServerDbController CreateDbController() { ServerDbController db = null; // See if the instance already exists try { db = DbControllerBase.GetInstance() as ServerDbController; } catch (MemberAccessException) { } if (db == null) { var settings = new DbConnectionSettings(); db = (ServerDbController)settings.CreateDbControllerPromptEditWhenInvalid(x => new ServerDbController(x.GetMySqlConnectionString()), x => PromptEditDbSettingsFile(settings, x)); } return(db); }