/// <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);
        }
Beispiel #2
0
        /// <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);
        }