using System; using System.Collections.Generic; using ZeroLevel.Network.SDL; namespace ZeroLevel.Network { public interface IServer { #region Messages IServer RegisterInbox(string inbox, MessageHandler handler); IServer RegisterInbox<T>(string inbox, MessageHandler<T> handler); // Default inboxe IServer RegisterInbox(MessageHandler handler); IServer RegisterInbox<T>(MessageHandler<T> handler); #endregion #region Requests IServer RegisterInbox<Tresponse>(string inbox, RequestHandler<Tresponse> handler); IServer RegisterInbox<Trequest, Tresponse>(string inbox, RequestHandler<Trequest, Tresponse> handler); // Default inboxe IServer RegisterInbox<Tresponse>(RequestHandler<Tresponse> handler); IServer RegisterInbox<Trequest, Tresponse>(RequestHandler<Trequest, Tresponse> handler); #endregion bool ContainsInbox(string inbox); bool ContainsHandlerInbox(string inbox); bool ContainsRequestorInbox(string inbox); IEnumerable<InboxServiceDescription> CollectInboxInfo(); event Action<ISocketClient> OnDisconnect; event Action<IClient> OnConnect; } }