mirror of
https://github.com/RaidMax/IW4M-Admin.git
synced 2025-06-07 21:58:06 -05:00
Add server status received event including raw response
This commit is contained in:
parent
d325993670
commit
b286548906
@ -175,6 +175,7 @@ namespace IW4MAdmin.Application.RConParsers
|
||||
|
||||
return new StatusResponse
|
||||
{
|
||||
RawResponse = response,
|
||||
Clients = ClientsFromStatus(response).ToArray(),
|
||||
Map = GetValueFromStatus<string>(response, ParserRegex.GroupType.RConStatusMap, Configuration.MapStatus),
|
||||
GameType = GetValueFromStatus<string>(response, ParserRegex.GroupType.RConStatusGametype, Configuration.GametypeStatus),
|
||||
|
@ -6,10 +6,11 @@ namespace IW4MAdmin.Application.RConParsers
|
||||
/// <inheritdoc cref="IStatusResponse"/>
|
||||
public class StatusResponse : IStatusResponse
|
||||
{
|
||||
public string Map { get; set; }
|
||||
public string GameType { get; set; }
|
||||
public string Hostname { get; set; }
|
||||
public int? MaxClients { get; set; }
|
||||
public EFClient[] Clients { get; set; }
|
||||
public string Map { get; init; }
|
||||
public string GameType { get; init; }
|
||||
public string Hostname { get; init; }
|
||||
public int? MaxClients { get; init; }
|
||||
public EFClient[] Clients { get; init; }
|
||||
public string[] RawResponse { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
using SharedLibraryCore.Interfaces;
|
||||
|
||||
namespace SharedLibraryCore.Events.Server;
|
||||
|
||||
public class ServerStatusReceiveEvent : GameServerEvent
|
||||
{
|
||||
public IStatusResponse Response { get; set; }
|
||||
public string RawData { get; set; }
|
||||
}
|
@ -73,6 +73,11 @@ public interface IGameServerEventSubscriptions
|
||||
/// </summary>
|
||||
static event Func<ServerValueSetCompleteEvent, CancellationToken, Task> ServerValueSetCompleted;
|
||||
|
||||
/// <summary>
|
||||
/// Raised when a server's status response is received
|
||||
/// </summary>
|
||||
static event Func<ServerStatusReceiveEvent, CancellationToken, Task> ServerStatusReceived;
|
||||
|
||||
static Task InvokeEventAsync(CoreEvent coreEvent, CancellationToken token)
|
||||
{
|
||||
return coreEvent switch
|
||||
@ -88,6 +93,7 @@ public interface IGameServerEventSubscriptions
|
||||
ServerValueReceiveEvent serverValueReceiveEvent => ServerValueReceived?.InvokeAsync(serverValueReceiveEvent, token) ?? Task.CompletedTask,
|
||||
ServerValueSetRequestEvent serverValueSetRequestEvent => ServerValueSetRequested?.InvokeAsync(serverValueSetRequestEvent, token) ?? Task.CompletedTask,
|
||||
ServerValueSetCompleteEvent serverValueSetCompleteEvent => ServerValueSetCompleted?.InvokeAsync(serverValueSetCompleteEvent, token) ?? Task.CompletedTask,
|
||||
ServerStatusReceiveEvent serverStatusReceiveEvent => ServerStatusReceived?.InvokeAsync(serverStatusReceiveEvent, token) ?? Task.CompletedTask,
|
||||
_ => Task.CompletedTask
|
||||
};
|
||||
}
|
||||
|
@ -31,5 +31,10 @@ namespace SharedLibraryCore.Interfaces
|
||||
/// active clients
|
||||
/// </summary>
|
||||
EFClient[] Clients { get; }
|
||||
|
||||
/// <summary>
|
||||
/// raw text data from the game server
|
||||
/// </summary>
|
||||
string[] RawResponse { get; }
|
||||
}
|
||||
}
|
@ -868,7 +868,14 @@ namespace SharedLibraryCore
|
||||
{
|
||||
try
|
||||
{
|
||||
return await server.RconParser.GetStatusAsync(server.RemoteConnection, token);
|
||||
var response = await server.RconParser.GetStatusAsync(server.RemoteConnection, token);
|
||||
|
||||
server.Manager.QueueEvent(new ServerStatusReceiveEvent
|
||||
{
|
||||
Response = response
|
||||
});
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
catch (TaskCanceledException)
|
||||
|
Loading…
x
Reference in New Issue
Block a user