ClientMsgHandler.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using CommonNetwork_ICE.Common;
  6. using CommonLang.Protocol;
  7. using CommonNetwork_ICE.Util;
  8. using CommonNetwork_ICE.Session;
  9. using Slice;
  10. using CommonLang.Log;
  11. using CommonNetwork_ICE.Client;
  12. namespace CommonNetwork_ICE.Msg
  13. {
  14. /// <summary>
  15. /// ICE消息委托处理类:根据客户端消息接收类的委托,处理服务器发来的ICE网络消息
  16. /// </summary>
  17. internal abstract class ClientMsgHandler
  18. {
  19. private static Logger log = LoggerFactory.GetLogger("ClientMsgHandler");
  20. // 数据包编码解码器
  21. public IceMessageCodec Codec { get; set; }
  22. // ICE客户端
  23. protected IceClientConnector iceClient;
  24. // 会话对象
  25. protected IceClientNetSession session;
  26. public ClientMsgHandler(IceClientConnector iceClient, IceClientNetSession session)
  27. {
  28. this.iceClient = iceClient;
  29. this.session = session;
  30. }
  31. /// <summary>
  32. /// 收到数据包
  33. /// </summary>
  34. /// <param name="message">数据包</param>
  35. /// <param name="ip">发送方IP</param>
  36. /// <param name="port">发送方端口</param>
  37. public abstract void RecvData(int recvPort, TransMessage message, String ip, int port);
  38. /// <summary>
  39. /// 处理发送数据后收到服务器的关键数据包响应
  40. /// </summary>
  41. /// <param name="serial"></param>
  42. /// <param name="ip"></param>
  43. /// <param name="port"></param>
  44. public void SendDataRecvAck(int recvPort, long serial, string ip, int port)
  45. {
  46. log.Trace("收到服务器发来关键数据包响应,地址IP【" + ip + "】,端口【" + port + "】,编号:" + serial);
  47. iceClient.SetSentLastSerial(serial);
  48. }
  49. /// <summary>
  50. /// 处理服务器连接上客户端
  51. /// </summary>
  52. /// <param name="ip"></param>
  53. /// <param name="port"></param>
  54. public void Connect(string ip, int port)
  55. {
  56. // 目前服务器不会主动连接客户端,此方法客户端不实现
  57. }
  58. /// <summary>
  59. /// 处理收到服务器的连接成功响应
  60. /// </summary>
  61. /// <param name="ip"></param>
  62. /// <param name="port"></param>
  63. public void ConnectAck(string ip, int port)
  64. {
  65. iceClient.IsConnected = true;
  66. log.Info("收到服务器发来连接成功响应,地址IP【" + ip + "】,端口【" + port + "】");
  67. }
  68. /// <summary>
  69. /// 处理收到服务器的会话关闭请求,回发关闭响应
  70. /// </summary>
  71. /// <param name="ip"></param>
  72. /// <param name="port"></param>
  73. public void Close(int recvPort, string ip, int port)
  74. {
  75. iceClient.IsConnected = false;
  76. iceClient.Connector.Sender.CloseAck(recvPort);
  77. iceClient.Close();
  78. log.Info("收到服务器发来关闭连接请求,地址IP【" + ip + "】,端口【" + port + "】");
  79. }
  80. /// <summary>
  81. /// 处理收到服务器的会话关闭响应
  82. /// </summary>
  83. /// <param name="ip"></param>
  84. /// <param name="port"></param>
  85. public void CloseAck(int recvPort, string ip, int port)
  86. {
  87. iceClient.IsConnected = false;
  88. log.Info("收到服务器发来关闭成功响应,地址IP【" + ip + "】,端口【" + port + "】");
  89. }
  90. }
  91. }