public EventController(ILogger <EventController> logger, ISessionDatabase setSessionDatabase, IEventDatabase setEventDatabase) { _logger = logger; sessionDatabase = setSessionDatabase; eventDatabase = setEventDatabase; }
public override void Initialize(string name, NameValueCollection config) { if (string.IsNullOrEmpty(name)) { name = "CosmosDb session state provider"; } base.Initialize(name, config); // Don't ask me why it is prefixed with "x", if you name it just lockTtlSeconds it would fail without an error message. var lockTtlSeconds = config.GetInt32("xLockTtlSeconds", 30); var consistencyLevel = config.GetEnum("consistencyLevel", ConsistencyLevel.Strong); var databaseId = config.GetRequiredString("databaseId"); var compressionEnabled = config.GetBoolean("compressionEnabled", true); var connectionString = config.GetRequiredString("connectionString"); // ReSharper disable once HeapView.CanAvoidClosure _store = Databases.GetOrAdd(name, n => new Lazy <ISessionDatabase>( () => { var db = new CosmosSessionDatabase(connectionString, databaseId, lockTtlSeconds, compressionEnabled, consistencyLevel); db.Initialize(); return(db); }, LazyThreadSafetyMode.PublicationOnly)) .Value; }
private void OnLoad() { const string classDirectory = "leveling"; Config.Instance = JsonConfig.LoadOrCreate <Config>(this, ConfigPath); var dbConfig = Config.Instance.DatabaseConfig; SessionRepository = SessionDatabaseFactory.LoadOrCreateDatabase(dbConfig.DatabaseType, dbConfig.ConnectionString); InitializeBanking(); Directory.CreateDirectory(classDirectory); var classDefs = ClassDefinition.Load(classDirectory); _classDefinitions = classDefs; _classes = _classDefinitions.Select(cd => new Class(cd)).ToList(); ////if default class file does not exist, we're in an error state //if( _classDefinitions.Select(cd => cd.Name). // FirstOrDefault(n => n == Config.Instance.DefaultClassName) == null ) //{ // //throw new Exception($"DefaultClassName: '{Config.Instance.DefaultClassName}' was not found."); // ServerApi.LogWriter.PluginWriteLine(this, $"DefaultClassName: '{Config.Instance.DefaultClassName}' was not found. ", TraceLevel.Error); // //_classDefinitions.Clear(); // //_classes.Clear(); // //return; //} //foreach(var def in classDefs) //{ // //disabled during conversion to multi currency // //def.PreParseRewardValues(ExpCurrency); // def.PreParseRewardValues(); //} ItemNameToLevelRequirements?.Clear(); var levels = _classes.SelectMany(c => c.Levels).ToList(); foreach (var @class in _classes) { @class.Resolve(levels, 0); } foreach (var @class in _classes) { @class.Resolve(levels, 1); } foreach (var level in levels) { foreach (var itemName in level.ItemNamesAllowed) { ItemNameToLevelRequirements[itemName] = level; } } }
private void OnLoad() { var cfg = Config.Instance = JsonConfig.LoadOrCreate <Config>(this, ConfigPath); var dbConfig = cfg.DatabaseConfig; SessionRepository = SessionDatabaseFactory.LoadOrCreateDatabase(dbConfig.DatabaseType, dbConfig.ConnectionString); CustomSkillDefinitionLoader = CustomSkillDefinitionLoader.Load(Path.Combine(DataDirectory, cfg.DefinitionFilepath), cfg.AutoCreateDefinitionFile); CustomSkillRunner = new CustomSkillRunner(); //connected players need sessions regenerated, in case this was a reload foreach (var player in TShock.Players) { if (player?.Active == true) { var session = Session.GetOrCreateSession(player); //... may not need to actually do anything here } } }
public static ISessionDatabase LoadOrCreateDatabase(string databaseType, string connectionString) { ISessionDatabase db = null; switch (databaseType) { //case "redis": // db = new RedisSessionDatabase(connectionString); // break; case "mysql": db = new MySqlSessionDatabase(connectionString); break; case "sqlite": default: db = new SqliteSessionDatabase(connectionString); break; } return(db); }