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
|
return new StatusResponse
|
||||||
{
|
{
|
||||||
|
RawResponse = response,
|
||||||
Clients = ClientsFromStatus(response).ToArray(),
|
Clients = ClientsFromStatus(response).ToArray(),
|
||||||
Map = GetValueFromStatus<string>(response, ParserRegex.GroupType.RConStatusMap, Configuration.MapStatus),
|
Map = GetValueFromStatus<string>(response, ParserRegex.GroupType.RConStatusMap, Configuration.MapStatus),
|
||||||
GameType = GetValueFromStatus<string>(response, ParserRegex.GroupType.RConStatusGametype, Configuration.GametypeStatus),
|
GameType = GetValueFromStatus<string>(response, ParserRegex.GroupType.RConStatusGametype, Configuration.GametypeStatus),
|
||||||
|
@ -6,10 +6,11 @@ namespace IW4MAdmin.Application.RConParsers
|
|||||||
/// <inheritdoc cref="IStatusResponse"/>
|
/// <inheritdoc cref="IStatusResponse"/>
|
||||||
public class StatusResponse : IStatusResponse
|
public class StatusResponse : IStatusResponse
|
||||||
{
|
{
|
||||||
public string Map { get; set; }
|
public string Map { get; init; }
|
||||||
public string GameType { get; set; }
|
public string GameType { get; init; }
|
||||||
public string Hostname { get; set; }
|
public string Hostname { get; init; }
|
||||||
public int? MaxClients { get; set; }
|
public int? MaxClients { get; init; }
|
||||||
public EFClient[] Clients { get; set; }
|
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>
|
/// </summary>
|
||||||
static event Func<ServerValueSetCompleteEvent, CancellationToken, Task> ServerValueSetCompleted;
|
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)
|
static Task InvokeEventAsync(CoreEvent coreEvent, CancellationToken token)
|
||||||
{
|
{
|
||||||
return coreEvent switch
|
return coreEvent switch
|
||||||
@ -88,6 +93,7 @@ public interface IGameServerEventSubscriptions
|
|||||||
ServerValueReceiveEvent serverValueReceiveEvent => ServerValueReceived?.InvokeAsync(serverValueReceiveEvent, token) ?? Task.CompletedTask,
|
ServerValueReceiveEvent serverValueReceiveEvent => ServerValueReceived?.InvokeAsync(serverValueReceiveEvent, token) ?? Task.CompletedTask,
|
||||||
ServerValueSetRequestEvent serverValueSetRequestEvent => ServerValueSetRequested?.InvokeAsync(serverValueSetRequestEvent, token) ?? Task.CompletedTask,
|
ServerValueSetRequestEvent serverValueSetRequestEvent => ServerValueSetRequested?.InvokeAsync(serverValueSetRequestEvent, token) ?? Task.CompletedTask,
|
||||||
ServerValueSetCompleteEvent serverValueSetCompleteEvent => ServerValueSetCompleted?.InvokeAsync(serverValueSetCompleteEvent, token) ?? Task.CompletedTask,
|
ServerValueSetCompleteEvent serverValueSetCompleteEvent => ServerValueSetCompleted?.InvokeAsync(serverValueSetCompleteEvent, token) ?? Task.CompletedTask,
|
||||||
|
ServerStatusReceiveEvent serverStatusReceiveEvent => ServerStatusReceived?.InvokeAsync(serverStatusReceiveEvent, token) ?? Task.CompletedTask,
|
||||||
_ => Task.CompletedTask
|
_ => Task.CompletedTask
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -31,5 +31,10 @@ namespace SharedLibraryCore.Interfaces
|
|||||||
/// active clients
|
/// active clients
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EFClient[] Clients { get; }
|
EFClient[] Clients { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// raw text data from the game server
|
||||||
|
/// </summary>
|
||||||
|
string[] RawResponse { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -868,7 +868,14 @@ namespace SharedLibraryCore
|
|||||||
{
|
{
|
||||||
try
|
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)
|
catch (TaskCanceledException)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user