1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-16 07:57:25 +08:00
osu-lazer/osu.Game/Online/IHubClientConnector.cs
2023-11-21 15:15:45 +09:00

44 lines
1.4 KiB
C#

// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR.Client;
using osu.Framework.Bindables;
using osu.Game.Online.API;
namespace osu.Game.Online
{
/// <summary>
/// A component that manages the life cycle of a connection to a SignalR Hub.
/// Should generally be retrieved from an <see cref="IAPIProvider"/>.
/// </summary>
public interface IHubClientConnector : IDisposable
{
/// <summary>
/// The current connection opened by this connector.
/// </summary>
HubConnection? CurrentConnection { get; }
/// <summary>
/// Whether this is connected to the hub, use <see cref="CurrentConnection"/> to access the connection, if this is <c>true</c>.
/// </summary>
IBindable<bool> IsConnected { get; }
/// <summary>
/// Invoked whenever a new hub connection is built, to configure it before it's started.
/// </summary>
public Action<HubConnection>? ConfigureConnection { get; set; }
/// <summary>
/// Forcefully disconnects the client from the server.
/// </summary>
Task Disconnect();
/// <summary>
/// Reconnect if already connected.
/// </summary>
Task Reconnect();
}
}