2018-04-13 02:32:30 -04:00
|
|
|
|
using System.Collections.Generic;
|
2018-04-11 18:24:21 -04:00
|
|
|
|
using System.Threading.Tasks;
|
2018-11-05 22:01:29 -05:00
|
|
|
|
using SharedLibraryCore.Database.Models;
|
2019-01-26 21:33:37 -05:00
|
|
|
|
using static SharedLibraryCore.Server;
|
2018-04-11 18:24:21 -04:00
|
|
|
|
|
|
|
|
|
namespace SharedLibraryCore.Interfaces
|
|
|
|
|
{
|
|
|
|
|
public interface IRConParser
|
|
|
|
|
{
|
2019-02-02 20:40:37 -05:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// retrieves the value of a given DVAR
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <typeparam name="T">type of DVAR expected (string, int, float etc...)</typeparam>
|
|
|
|
|
/// <param name="connection">RCon connection to retrieve with</param>
|
|
|
|
|
/// <param name="dvarName">name of DVAR</param>
|
2020-04-17 16:05:16 -04:00
|
|
|
|
/// <param name="fallbackValue">default value to return if dvar retrieval fails</param>
|
2019-02-02 20:40:37 -05:00
|
|
|
|
/// <returns></returns>
|
2020-04-17 16:05:16 -04:00
|
|
|
|
Task<Dvar<T>> GetDvarAsync<T>(IRConConnection connection, string dvarName, T fallbackValue = default);
|
2019-02-02 20:40:37 -05:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// set value of DVAR by name
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="connection">RCon connection to use</param>
|
|
|
|
|
/// <param name="dvarName">name of DVAR to set</param>
|
|
|
|
|
/// <param name="dvarValue">value to set DVAR to</param>
|
|
|
|
|
/// <returns></returns>
|
2020-02-11 17:44:06 -05:00
|
|
|
|
Task<bool> SetDvarAsync(IRConConnection connection, string dvarName, object dvarValue);
|
2019-02-02 20:40:37 -05:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// executes a console command on the server
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="connection">RCon connection to use</param>
|
|
|
|
|
/// <param name="command">console command to execute</param>
|
|
|
|
|
/// <returns></returns>
|
2020-02-11 17:44:06 -05:00
|
|
|
|
Task<string[]> ExecuteCommandAsync(IRConConnection connection, string command);
|
2019-02-02 20:40:37 -05:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// get the list of connected clients from status response
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="connection">RCon connection to use</param>
|
2020-08-05 10:30:02 -04:00
|
|
|
|
/// <returns>list of clients, current map, and current gametype</returns>
|
|
|
|
|
Task<(List<EFClient>, string, string)> GetStatusAsync(IRConConnection connection);
|
2019-02-02 20:40:37 -05:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// stores the RCon configuration
|
|
|
|
|
/// </summary>
|
2019-01-26 21:33:37 -05:00
|
|
|
|
IRConParserConfiguration Configuration { get; set; }
|
2019-02-02 20:40:37 -05:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// stores the game/client specific version (usually the value of the "version" DVAR)
|
|
|
|
|
/// </summary>
|
2019-02-02 19:54:30 -05:00
|
|
|
|
string Version { get; set; }
|
2019-02-05 19:02:45 -05:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// specifies the game name (usually the internal studio iteration ie: IW4, T5 etc...)
|
|
|
|
|
/// </summary>
|
|
|
|
|
Game GameName { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// indicates if the game supports generating a log path from DVAR retrieval
|
|
|
|
|
/// of fs_game, fs_basepath, g_log
|
|
|
|
|
/// </summary>
|
|
|
|
|
bool CanGenerateLogPath { get; set; }
|
2020-01-21 19:08:18 -05:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
2020-06-16 18:16:12 -04:00
|
|
|
|
/// specifies the name of the parser
|
2020-01-21 19:08:18 -05:00
|
|
|
|
/// </summary>
|
|
|
|
|
string Name { get; set; }
|
2020-06-16 18:16:12 -04:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// retrieves the value of given dvar key if it exists in the override dict
|
|
|
|
|
/// otherwise returns original
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="dvarName">name of dvar key</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
string GetOverrideDvarName(string dvarName);
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// retrieves the configuration value of a dvar key for
|
|
|
|
|
/// games that do not support the given dvar
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="dvarName">dvar key name</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
T GetDefaultDvarValue<T>(string dvarName);
|
2018-04-11 18:24:21 -04:00
|
|
|
|
}
|
|
|
|
|
}
|