コード例 #1
0
        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;
        }
コード例 #3
0
        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;
                }
            }
        }
コード例 #4
0
        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
                }
            }
        }
コード例 #5
0
        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);
        }