mirror of
https://gitlab.com/fabinfra/fabaccess/fabaccess-api-cs.git
synced 2025-03-12 14:51:42 +01:00
85 lines
3.2 KiB
C#
85 lines
3.2 KiB
C#
|
using System;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using Capnp.Rpc;
|
|||
|
using FabAccessAPI.Exceptions;
|
|||
|
using FabAccessAPI.Schema;
|
|||
|
|
|||
|
namespace FabAccessAPI
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Service to connect to a server and maintain the connection
|
|||
|
/// </summary>
|
|||
|
public interface IAPI
|
|||
|
{
|
|||
|
#region Information about a connection and the server
|
|||
|
/// <summary>
|
|||
|
/// State of the conneciton, is the API-Service connecting to a server
|
|||
|
/// </summary>
|
|||
|
bool IsConnecting { get; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// State of the conneciton, is the API-Service connected to a server
|
|||
|
/// </summary>
|
|||
|
bool IsConnected { get; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Information about the connection
|
|||
|
/// </summary>
|
|||
|
/// <exception cref="InvalidOperationException"> When API-Service is not connected or trying to connected to a server </exception>
|
|||
|
ConnectionData ConnectionData { get; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Information about the server
|
|||
|
/// Is only avalible if the API-Service is connected
|
|||
|
/// </summary>
|
|||
|
/// <exception cref="InvalidOperationException"> When API-Service is not connected </exception>
|
|||
|
ServerData ServerData { get; }
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Methods to connect to server
|
|||
|
/// <summary>
|
|||
|
/// Connect to server with ConnectionData
|
|||
|
/// If connection lost, the API-Server will try to reconnect
|
|||
|
/// </summary>
|
|||
|
/// <param name="connectionData"> Data to establish a connection to a server </param>
|
|||
|
/// <exception cref="ConnectionException"> When API-Service can not connect to a server </exception>
|
|||
|
/// <exception cref="AuthenticationException"> When API-Service can connect to a server but can not authenticate </exception>
|
|||
|
/// <exception cref="InvalidOperationException"> When API-Service is allready connected </exception>
|
|||
|
Task Connect(ConnectionData connectionData, TcpRpcClient tcpRpcClient = null);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Disconnect from a server
|
|||
|
/// </summary>
|
|||
|
/// <exception cref="InvalidOperationException"> When API-Service is not connected or trying to connect </exception>
|
|||
|
Task Disconnect();
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Try to connect to a server and get ServerData
|
|||
|
/// The connection is not maintained
|
|||
|
/// </summary>
|
|||
|
/// <exception cref="ConnectionException"> When API-Service can not connect to a server </exception>
|
|||
|
Task<ServerData> TryToConnect(ConnectionData connectionData, TcpRpcClient tcpRpcClient = null);
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Session
|
|||
|
/// <summary>
|
|||
|
/// Get session after connection
|
|||
|
/// </summary>
|
|||
|
/// <exception cref="InvalidOperationException"> When API-Service is not connected </exception>
|
|||
|
Session Session { get; }
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Events
|
|||
|
/// <summary>
|
|||
|
/// Event on changes in connection status
|
|||
|
/// </summary>
|
|||
|
event EventHandler<ConnectionStatusChanged> ConnectionStatusChanged;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Unbind all handlers from EventHandler<ConnectionStatusChanged>
|
|||
|
/// </summary>
|
|||
|
void UnbindEventHandler();
|
|||
|
#endregion
|
|||
|
}
|
|||
|
}
|