using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using SharedLibraryCore.Dtos; using SharedLibraryCore.Helpers; 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 MaxConcurrentClientsAsync(long? serverId = 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, 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); } }