INetMessage.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace MECF.Framework.Common.Net
  6. {
  7. /// <summary>
  8. /// 本系统的消息类,包含了各种解析规则,数据信息提取规则
  9. /// </summary>
  10. public interface INetMessage<T>
  11. {
  12. /// <summary>
  13. /// 消息头的指令长度
  14. /// </summary>
  15. int ProtocolHeadBytesLength { get; }
  16. /// <summary>
  17. /// 手动设置消息头指令长度
  18. /// </summary>
  19. void SetProtocolHeadBytesLength();
  20. /// <summary>
  21. /// 从当前的头子节文件中提取出接下来需要接收的数据长度
  22. /// </summary>
  23. /// <returns>返回接下来的数据内容长度</returns>
  24. int GetContentLengthByHeadBytes();
  25. /// <summary>
  26. /// 检查头子节的合法性
  27. /// </summary>
  28. /// <param name="token">特殊的令牌,有些特殊消息的验证</param>
  29. /// <returns>是否成功的结果</returns>
  30. bool CheckHeadBytesLegal();
  31. /// <summary>
  32. /// 检查数据合法性
  33. /// </summary>
  34. /// <returns></returns>
  35. bool CheckDataLegal();
  36. /// <summary>
  37. /// 确认返回结果
  38. /// </summary>
  39. /// <returns></returns>
  40. bool ConfirmResponseResult();
  41. /// <summary>
  42. /// 获取头子节里的消息标识
  43. /// </summary>
  44. /// <returns>消息标识</returns>
  45. int GetHeadBytesIdentity();
  46. /// <summary>
  47. /// 错误代码
  48. /// </summary>
  49. int ErrorCode { get; set; }
  50. /// <summary>
  51. /// 错误信息
  52. /// </summary>
  53. string ErrorMsg { get; set; }
  54. /// <summary>
  55. /// 消息头字节
  56. /// </summary>
  57. byte[] HeadBytes { get; set; }
  58. /// <summary>
  59. /// 消息内容字节
  60. /// </summary>
  61. byte[] ContentBytes { get; set; }
  62. /// <summary>
  63. /// 发送的字节信息
  64. /// </summary>
  65. byte[] SendBytes { get; set; }
  66. /// <summary>
  67. /// 编码
  68. /// </summary>
  69. /// <param name="data"></param>
  70. /// <returns></returns>
  71. byte[] Code(T data);
  72. /// <summary>
  73. /// 解码
  74. /// </summary>
  75. /// <param name="data"></param>
  76. /// <returns></returns>
  77. T Decode();
  78. }
  79. }