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