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 + "】");
}
}
}