using System; using System.Net; using ZeroLevel.Models; namespace ZeroLevel.Network { public interface IClient : IDisposable { IPEndPoint EndPoint { get; } SocketClientStatus Status { get; } IRouter Router { get; } ISocketClient Socket { get; } InvokeResult Send<T>(T message); InvokeResult Send(string inbox); InvokeResult Send(string inbox, byte[] data); InvokeResult Send<T>(string inbox, T message); InvokeResult Request(string inbox, Action<byte[]> callback); InvokeResult Request(string inbox, byte[] data, Action<byte[]> callback); InvokeResult Request<Tresponse>(string inbox, Action<Tresponse> callback); InvokeResult Request<Trequest, Tresponse>(string inbox, Trequest request, Action<Tresponse> callback); } }