using System; using System.Collections.Generic; using System.Text; using CommonLang.Protocol; using System.Collections.Specialized; using CommonLang.Net; namespace CommonServer.Server { /// <summary> /// 服务器监听器 /// </summary> public interface IServerListener { /// <summary> /// 服务器初始化回调 /// </summary> /// <param name="server"></param> void OnInit(IServer server); /// <summary> /// 服务器关闭回调 /// </summary> void OnDestory(); /// <summary> /// 一个链接建立成功 /// </summary> /// <param name="session"></param> /// <returns></returns> ISessionListener OnSessionConnected(ISession session); } /// <summary> /// /// </summary> public interface IServerFactory { IServer CreateServer(INetPackageCodec codec); } public interface IServer { /// <summary> /// 客户端连接套接字 /// </summary> string ClientConnectString { get; } /// <summary> /// 获取编解码器 /// </summary> INetPackageCodec PackageCodec { get; } /// <summary> /// 获取当前已连接数 /// </summary> int SessionCount { get; } /// <summary> /// 启动服务器 /// </summary> /// <param name="port"></param> /// <param name="listener"></param> void Open(IDictionary<string, string> config, IServerListener listener); /// <summary> /// 关闭服务器 /// </summary> void Dispose(); /// <summary> /// 广播消息 /// </summary> /// <param name="message"></param> void Broadcast(IMessage message); /// <summary> /// 服务器是否有此链接 /// </summary> /// <param name="session"></param> /// <returns></returns> bool HasSession(ISession session); /// <summary> /// 根据 Session ID 获取链接 /// </summary> /// <param name="sessionID"></param> /// <returns></returns> ISession GetSessionByID(string sessionID); /// <summary> /// 获取所有链接 /// </summary> /// <returns></returns> IEnumerable<ISession> GetSessions(); long TotalSentBytes { get; } long TotalRecvBytes { get; } void SetEmulateLaggingMS(int min, int max); void GetEmulateLaggingMS(out int min, out int max); } }