Ejemplo n.º 1
0
        private IPersistenceContextProvider PrepareRepositoryManager(bool reinit)
        {
            PersistenceContextProvider.InitializeSqlLogging();
            var manager = new PersistenceContextProvider();

            if (reinit || !manager.DatabaseExists())
            {
                Log.Info("The database is getting (re-)ininitialized...");
                manager.ReCreateDatabase();
                var initialization = new DataInitialization(manager);
                initialization.CreateInitialData();
                Log.Info("...initialization finished.");
            }
            else if (!manager.IsDatabaseUpToDate())
            {
                Console.WriteLine("The database needs to be updated before the server can be started. Apply update? (y/n)");
                var key = Console.ReadLine()?.ToLowerInvariant();
                if (key == "y")
                {
                    manager.ApplyAllPendingUpdates();
                    Console.WriteLine("The database has been successfully updated.");
                }
                else
                {
                    Console.WriteLine("Cancelled the update process, can't start the server.");
                    return(null);
                }
            }

            return(manager);
        }
        public void SetupDatabaseAndTestLoadingData()
        {
            var manager = new PersistenceContextProvider(new NullLoggerFactory());

            manager.ReCreateDatabase();
            this.TestDataInitialization(new PersistenceContextProvider(new NullLoggerFactory()));
        }
Ejemplo n.º 3
0
 private void ValidateEagerLoadingWithColdCache(PersistenceContextProvider persistenceContextProvider)
 {
     using (persistenceContextProvider) {
         using (var context = persistenceContextProvider.CreateContext()) {
             var account = context.GetAll <Account>().First();
             Assert.IsNotNull(account.Characters[0].CurrentMap.Name);
         }
     }
 }
Ejemplo n.º 4
0
        /// <summary>The server entry point.</summary>
        public static void Main()
        {
            var repository = LogManager.GetRepository(Assembly.GetEntryAssembly());

            log4net.Config.BasicConfigurator.Configure(repository);

            var config = new ProgramConfiguration();

            using (var persistenceContextProvider = new PersistenceContextProvider(config.PersistenceConfiguration))
                using (var server = CreateServer(config, persistenceContextProvider)) {
                    server.Start();
                    Task.WaitAny(server.ShutdownTask, InterruptSignal());
                    server.Stop();
                }
        }
Ejemplo n.º 5
0
        /// <summary>The server entry point.</summary>
        public static void Main()
        {
            var repository = LogManager.GetRepository(Assembly.GetEntryAssembly());

            log4net.Config.BasicConfigurator.Configure(repository);

            var config = new ProgramConfiguration();

            using (var persistenceContextProvider = new PersistenceContextProvider(config.PersistenceConfiguration))
                using (var gameServerRegistrar = new GameServerRegistrarProxy(config.ConnectServer))
                    using (var accountLoginService = new AccountLoginServiceProxy(config.LoginServer))
                        using (var gameServer = GameServerFactory.Create(config, persistenceContextProvider, gameServerRegistrar, accountLoginService)) {
                            gameServer.Start();
                            Task.WaitAny(gameServer.ShutdownTask, InterruptSignal());
                            gameServer.Stop();
                        }
        }
Ejemplo n.º 6
0
        /// <summary>The server entry point.</summary>
        public static void Main()
        {
            ConfigureLogging();
            using (var persistenceContextProvider = new PersistenceContextProvider(PersistenceConfiguration.InMemory())) {
                var initializer = new PersistenceInitializer(persistenceContextProvider);
                Logger.Info("Creating configuration & test data");
                initializer.CreateConfiguration();
                initializer.CreateTestData();

                using (var connectServer = CreateConnectServer())
                    using (var loginServer = CreateLoginServer(persistenceContextProvider))
                        using (var gameServer = CreateGameServer(persistenceContextProvider, connectServer, loginServer))
                            using (BeginServerStart(connectServer))
                                using (BeginServerStart(loginServer))
                                    using (BeginServerStart(gameServer)) {
                                        Task.WaitAny(gameServer.ShutdownTask, connectServer.ShutdownTask, InterruptSignal());
                                    }
            }
        }
Ejemplo n.º 7
0
        private IPersistenceContextProvider PrepareRepositoryManager(bool reinit, string version, bool autoupdate, ILoggerFactory loggerFactory)
        {
            var contextProvider = new PersistenceContextProvider(loggerFactory);

            if (reinit || !contextProvider.DatabaseExists())
            {
                Log.Info("The database is getting (re-)initialized...");
                contextProvider.ReCreateDatabase();
                this.InitializeData(version, loggerFactory, contextProvider);
                Log.Info("...initialization finished.");
            }
            else if (!contextProvider.IsDatabaseUpToDate())
            {
                if (autoupdate)
                {
                    Console.WriteLine("The database needs to be updated before the server can be started. Updating...");
                    contextProvider.ApplyAllPendingUpdates();
                    Console.WriteLine("The database has been successfully updated.");
                }
                else
                {
                    Console.WriteLine("The database needs to be updated before the server can be started. Apply update? (y/n)");
                    var key = Console.ReadLine()?.ToLowerInvariant();
                    if (key == "y")
                    {
                        contextProvider.ApplyAllPendingUpdates();
                        Console.WriteLine("The database has been successfully updated.");
                    }
                    else
                    {
                        Console.WriteLine("Cancelled the update process, can't start the server.");
                        return(null !);
                    }
                }
            }
            else
            {
                // everything is fine and ready
            }

            return(contextProvider);
        }
Ejemplo n.º 8
0
        private void ValidatePersistenceCache(PersistenceContextProvider persistenceContextProvider)
        {
            using (persistenceContextProvider) {
                var dataInitializer = new PersistenceInitializer(persistenceContextProvider);
                dataInitializer.CreateConfiguration();
                dataInitializer.CreateTestData();

                GameConfiguration config1 = null;
                using (var context = persistenceContextProvider.CreateContext()) {
                    config1 = context.GetAll <GameConfiguration>().First();
                }

                GameConfiguration config2 = null;
                using (var context = persistenceContextProvider.CreateContext()) {
                    config2 = context.GetAll <GameConfiguration>().First();
                }

                // These references should be the same (fetched from the configuration cache)
                Assert.AreSame(config1.MapDefinitions[0].Name, config2.MapDefinitions[0].Name);
            }
        }
Ejemplo n.º 9
0
        public void SetupDatabaseAndTestLoadingData()
        {
            var manager = new PersistenceContextProvider();

            manager.ReCreateDatabase();
            var initialization = new DataInitialization(manager);

            initialization.CreateInitialData();

            // Loading game configuration
            using (var context = manager.CreateNewConfigurationContext())
            {
                var gameConfiguraton = context.Get <GameConfiguration>().FirstOrDefault();
                Assert.That(gameConfiguraton, Is.Not.Null);

                // Testing loading of an account
                using (var accountContext = manager.CreateNewPlayerContext(gameConfiguraton))
                {
                    var account1 = accountContext.GetAccountByLoginName("test1", "test1");
                    Assert.That(account1, Is.Not.Null);
                    Assert.That(account1.LoginName, Is.EqualTo("test1"));
                }
            }
        }