using System;
using System.Threading;
using InABox.Clients;
using InABox.Core;
namespace InABox.Rpc
{
public interface IRpcClientTransport : IRpcTransport
{
event RpcTransportOpenEvent OnOpen;
event RpcTransportCloseEvent OnClose;
event RpcTransportExceptionEvent OnException;
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);
RpcMessage Send(string command, ISerializeBinary parameters, bool checkErrors = true);
void Disconnect();
event RpcTransportMessageEvent OnMessage;
bool IsConnected();
bool IsSecure();
string? ServerName();
}
}