using System; using System.Collections.Generic; using System.Linq; using System.Text; using CommonNetwork_ICE.Common; using CommonLang.Protocol; using CommonNetwork_ICE.Util; using CommonNetwork_ICE.Session; using Slice; using CommonLang.Log; using CommonNetwork_ICE.Client; namespace CommonNetwork_ICE.Msg { /// /// ICE消息委托处理类:根据客户端消息接收类的委托,处理服务器发来的ICE网络消息 /// internal abstract class ClientMsgHandler { private static Logger log = LoggerFactory.GetLogger("ClientMsgHandler"); // 数据包编码解码器 public IceMessageCodec Codec { get; set; } // ICE客户端 protected IceClientConnector iceClient; // 会话对象 protected IceClientNetSession session; public ClientMsgHandler(IceClientConnector iceClient, IceClientNetSession session) { this.iceClient = iceClient; this.session = session; } /// /// 收到数据包 /// /// 数据包 /// 发送方IP /// 发送方端口 public abstract void RecvData(int recvPort, TransMessage message, String ip, int port); /// /// 处理发送数据后收到服务器的关键数据包响应 /// /// /// /// public void SendDataRecvAck(int recvPort, long serial, string ip, int port) { log.Trace("收到服务器发来关键数据包响应,地址IP【" + ip + "】,端口【" + port + "】,编号:" + serial); iceClient.SetSentLastSerial(serial); } /// /// 处理服务器连接上客户端 /// /// /// public void Connect(string ip, int port) { // 目前服务器不会主动连接客户端,此方法客户端不实现 } /// /// 处理收到服务器的连接成功响应 /// /// /// public void ConnectAck(string ip, int port) { iceClient.IsConnected = true; log.Info("收到服务器发来连接成功响应,地址IP【" + ip + "】,端口【" + port + "】"); } /// /// 处理收到服务器的会话关闭请求,回发关闭响应 /// /// /// public void Close(int recvPort, string ip, int port) { iceClient.IsConnected = false; iceClient.Connector.Sender.CloseAck(recvPort); iceClient.Close(); log.Info("收到服务器发来关闭连接请求,地址IP【" + ip + "】,端口【" + port + "】"); } /// /// 处理收到服务器的会话关闭响应 /// /// /// public void CloseAck(int recvPort, string ip, int port) { iceClient.IsConnected = false; log.Info("收到服务器发来关闭成功响应,地址IP【" + ip + "】,端口【" + port + "】"); } } }