using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Data.Models; using SharedLibraryCore.Dtos; namespace SharedLibraryCore.Interfaces { /// /// Exposes methods to get analytical data about server(s) /// public interface IServerDataViewer { /// /// Retrieves the max concurrent clients over a give time period for all servers or given server id /// /// ServerId to query on /// /// how far in the past to search /// CancellationToken /// Task<(int?, DateTime?)> MaxConcurrentClientsAsync(long? serverId = null, Reference.Game? gameCode = null, TimeSpan? overPeriod = null, CancellationToken token = default); /// /// Gets the total number of clients connected and total clients connected in the given time frame /// /// how far in the past to search /// /// CancellationToken /// Task<(int, int)> ClientCountsAsync(TimeSpan? overPeriod = null, Reference.Game? gameCode = null, CancellationToken token = default); /// /// Retrieves the client count and history over the given period /// /// how far in the past to search /// CancellationToken /// Task> ClientHistoryAsync(TimeSpan? overPeriod = null, CancellationToken token = default); /// /// Retrieves the number of ranked clients for given server id /// /// ServerId to query on /// CancellationToken /// Task RankedClientsCountAsync(long? serverId = null, CancellationToken token = default); } }