// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System.Threading; using System.Threading.Tasks; using osu.Game.Online.API; namespace osu.Game.Online.Notifications.Polling { /// /// A notifications client which polls for new messages every second. /// public class PollingNotificationsClient : NotificationsClient { private readonly IAPIProvider api; public PollingNotificationsClient(IAPIProvider api) : base(api) { this.api = api; } public override Task ConnectAsync(CancellationToken cancellationToken) { Task.Run(async () => { while (!cancellationToken.IsCancellationRequested) { await api.PerformAsync(CreateFetchMessagesRequest()); await Task.Delay(1000, cancellationToken); } }, cancellationToken); return Task.CompletedTask; } } }