private void Startup(uint ip, ushort steamPort, ushort gamePort, ushort queryPort, ServerMode serverMode, string versionString) { if (NativeHelpers.ServicesGameServer_GetSteamLoadStatus() == LoadStatus.NotLoaded) { // Only startup the native parts if they are not loaded yet if (!NativeMethods.ServicesGameServer_Startup(Constants.VersionInfo.InterfaceID, ip, steamPort, gamePort, queryPort, (int)serverMode, versionString)) { // Setup failed! Instance = null; ErrorCodes error = NativeHelpers.ServicesGameServer_GetErrorCode(); if (error == ErrorCodes.InvalidInterfaceVersion) { Error.ThrowError(ErrorCodes.InvalidInterfaceVersion, NativeMethods.ServicesGameServer_GetInterfaceVersion(), Constants.VersionInfo.InterfaceID); } else { Error.ThrowError(error); } } } serviceJobs = new JobManager(); serviceJobs.AddJob(new DelegateJob(() => RegisterManagedCallback(), () => RemoveManagedCallback())); serviceJobs.AddJob(new DelegateJob(() => gameServer = new GameServer(), () => gameServer.ReleaseManagedResources())); serviceJobs.AddJob(new DelegateJob(() => gameServerStats = new GameServerStats(), () => gameServerStats.ReleaseManagedResources())); serviceJobs.RunCreateJobs(); }
public static GameServerStats CreateGameServerStats() { var match = CreateGameMatchStats(); var modes = new ConcurrentDictionary <string, int> { [match.GameMode] = 1 }; var maps = new ConcurrentDictionary <string, int> { [match.Map] = 1 }; var stats = new GameServerStats { Endpoint = Server1Endpoint, Name = Server1Name, TotalMatchesPlayed = 1, MaximumPopulation = 5, TotalPopulation = 5, PlayedGameModes = modes, PlayedMaps = maps, MaximumMatchesPerDay = 1, Top5Maps = new[] { Map1 }, Top5GameModes = new[] { GameModeDM } }; stats.CalculateAverageData(Timestamp1, Timestamp1); return(stats); }
public void AfterClientSendingGetPopularServersRequest() { SendServer2Info(); SendServer3Info(); var match = Test.CreateGameMatchStats(); for (var i = 0; i < 5; i++) { client.SendRequest().PutMatchStats(match, Test.Server1Endpoint, Test.Timestamp1); } for (var i = 0; i < 3; i++) { client.SendRequest().PutMatchStats(match, Test.Server2Endpoint, Test.Timestamp1); } for (var i = 0; i < 2; i++) { client.SendRequest().PutMatchStats(match, Test.Server3Endpoint, Test.Timestamp1); } var response = client.GetPopularServers(3); server.ClearDatabaseAndCache(); var server1 = new GameServerStats(Test.Server1Endpoint, Test.Server1Name, 5); var server2 = new GameServerStats(Test.Server2Endpoint, Test.Server2Name, 3); var server3 = new GameServerStats(Test.Server3Endpoint, Test.Server3Name, 2); var servers = new[] { server1, server2, server3 }; var json = Extensions.SerializePopularServers(servers); var popularServers = JsonConvert.DeserializeObject <GameServerStats[]>(json); var result = JsonConvert.DeserializeObject <GameServerStats[]>(response.Message); result.ShouldBeEquivalentTo(popularServers); }
public GameServerStats GetStats() { var oldestRoom = _roomManager.GetOldestRoom(); var result = new GameServerStats() { RoomCount = _roomManager.GetRoomsCount(), PeerCount = PeerCollection.GetPeerCount(), RoomsPeerCount = _roomManager.GetRoomPeerCount(), OldestRoomCreatedOn = oldestRoom?.GetCreatedOnDateTime() }; result.PeersCountPerPort = new Dictionary <ushort, int>(); foreach (var listener in GetListeners()) { result.PeersCountPerPort.Add(listener.GetListenPort(), PeerCollection.GetPeerCount()); } return(result); }
private static GameServerStats RemoveExcessFields(GameServerStats stats) { return(Test.CreateGameServersStatsWithArguments(stats.Endpoint, stats.TotalMatchesPlayed, stats.MaximumMatchesPerDay, stats.AverageMatchesPerDay, stats.MaximumPopulation, stats.AveragePopulation, stats.Top5GameModes, stats.Top5Maps)); }