ClientMsgHandlerTcpDelegate.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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 class ClientMsgHandlerTcpDelegate : ClientMsgHandler
  18. {
  19. private static Logger log = LoggerFactory.GetLogger("ClientMsgHandlerTcpDelegate");
  20. public ClientMsgHandlerTcpDelegate(IceClientConnector iceClient, IceClientNetSession session)
  21. : base(iceClient, session)
  22. {
  23. }
  24. /// <summary>
  25. /// 收到数据包
  26. /// </summary>
  27. /// <param name="message">数据包</param>
  28. /// <param name="ip">发送方IP</param>
  29. /// <param name="port">发送方端口</param>
  30. public override void RecvData(int recvPort, TransMessage message, String ip, int port)
  31. {
  32. log.Trace("收到服务器发来数据,地址IP【" + ip + "】,端口【" + port + "】,编号:" + message.serial);
  33. // 数据解码
  34. IMessage imessage = null;
  35. try
  36. {
  37. Codec.doDecode(message, out imessage);
  38. }
  39. catch (Exception e)
  40. {
  41. Env.ENV_ERR_CODE = Error.ERR_CODE_4;
  42. session.onException(e);
  43. return;
  44. }
  45. if (imessage == null)
  46. {
  47. return;
  48. }
  49. // 数据处理
  50. try
  51. {
  52. long startTickCount = Environment.TickCount;
  53. session.onReceive(imessage, message.length);
  54. long endTickCount = Environment.TickCount;
  55. long interval = endTickCount - startTickCount;
  56. if (interval > Env.MSG_PROC_TIME_OUT)
  57. {
  58. log.Info("客户端消息处理超时,用时【" + interval + "】,消息编号【" + imessage.GetType() + "】,接收端口【" + recvPort + "】");
  59. }
  60. }
  61. catch (Exception e)
  62. {
  63. log.Error(e.Message);
  64. Env.ENV_ERR_CODE = Error.ERR_CODE_5;
  65. session.onException(e);
  66. }
  67. }
  68. }
  69. }