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(); } }