public static bool Initialize(out string message) { message = ""; try { Instance = ReadJson(); if (Instance != null) { EngineLog.Write(EngineLogLevel.Startup, "Successfully read Network config."); return(true); } if (!Write(out var pConfig)) { message = "Failed to create default NetworkConfiguration."; return(false); } pConfig.WriteJson(); EngineLog.Write(EngineLogLevel.Startup, "Successfully created Network config."); message = "No NetworkConfiguration found! Please edit generated config."; return(false); } catch (Exception ex) { EngineLog.Write(EngineLogLevel.Exception, "Failed to load Network config:\n {0}", ex); message = $"Failed to load NetworkConfiguration:\n {ex.StackTrace}"; return(false); } }
public static void Initialize() { var stopwatch = new Stopwatch(); stopwatch.Start(); InternalInstance = new ServerMain(); InternalInstance.WriteConsoleLogo(); EngineLog.Write(EngineLogLevel.Startup, "Starting LoginServer"); // Configuration if (!NetworkConfiguration.Initialize(out var netConfigMsg)) { throw new StartupException(netConfigMsg); } NetConfig = NetworkConfiguration.Instance; if (!DatabaseConfiguration.Initialize(out var dbConfigMsg)) { throw new StartupException(dbConfigMsg); } DbConfig = DatabaseConfiguration.Instance; if (!LoginConfiguration.Initialize(out var loginConfigMsg)) { throw new StartupException(loginConfigMsg); } LoginConfig = LoginConfiguration.Instance; // Database if (!DB.AddManager(DatabaseType.Account, DatabaseConfiguration.Instance)) { throw new StartupException("Database connection failure! See above error."); } // Handlers StoreHandlers(); // Networking WorldServer.Listen(NetConfig.LoginNetConfig.S2SListenIP, (ushort)NetConfig.LoginNetConfig.S2SListenPort); ClientServer.Listen(NetConfig.LoginNetConfig.ListenIP, (ushort)NetConfig.LoginNetConfig.ListenPort); // TODO: gamelogserver // GameLogServer.Connect(NetConfig.GameLogNetConfig.S2SListenIP, (ushort)NetConfig.GameLogNetConfig.S2SListenPort); stopwatch.Stop(); EngineLog.Write(EngineLogLevel.Startup, $"Time taken to start: {stopwatch.ElapsedMilliseconds}ms"); // Main server loop new Thread(() => { while (true) { Update(Time.Milliseconds); Thread.Sleep(10); } }).Start(); // Console commands? }
public int RunSQL(DatabaseType type, string sql, params object[] parameters) { using (var mClient = DB.GetDatabaseClient(type)) { var sqlString = new StringBuilder(); // Fix for floating point problems on some languages sqlString.AppendFormat(CultureInfo.GetCultureInfo("en-US").NumberFormat, sql, parameters); SqlCommand sqlCommand = null; try { sqlCommand = new SqlCommand(sqlString.ToString()); sqlCommand.Parameters.AddRange(parameters); mClient.mCommand = sqlCommand; return(mClient.ExecuteNonQuery()); } catch (SqlException ex) { EngineLog.Write(ex, $"Failed to Execute Query {sqlCommand?.CommandText}"); return(0); } } }
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { EngineLog.Write(EngineLogLevel.Exception, e.ExceptionObject.ToString()); }