using System;
using System.Threading;
using InABox.Clients;
using InABox.Core;
namespace InABox.Rpc
{
public interface IRpcClientTransport : IRpcTransport
{
bool Ping();
DatabaseInfo? Info();
///
/// Connect to remote server.
///
/// Cancellation token to cancel the connection.
/// if connection success, otherwise.
bool Connect(CancellationToken ct = default);
void Send(RpcMessage message);
TResult Send(TParameters parameters)
where TCommand : IRpcCommand
where TParameters : IRpcCommandParameters, ISerializeBinary
where TResult : IRpcCommandResult, ISerializeBinary, new();
void Disconnect();
event RpcTransportMessageEvent OnMessage;
bool IsConnected();
bool IsSecure();
string? ServerName();
}
}