说明

大数据固定包头,是对固定的包头模板的补充,一般来是,固定包头适配器,不能工作于超过2G的数据,但是在少数情况下,会有大量的数据传输需求。所以这部分的业务,可以用大数据固定包头实现。

实现

  1. 思路基本和固定包头一致,唯一的区别是,接收的数据分块,由用户自行决定保存。
  1. /// <summary>
  2. /// 模板解析“大数据固定包头”数据适配器
  3. /// </summary>
  4. class MyBigFixedHeaderCustomDataHandlingAdapter : CustomBigFixedHeaderDataHandlingAdapter<MyBigFixedHeaderRequestInfo>
  5. {
  6. public override int HeaderLength => throw new NotImplementedException();
  7. protected override MyBigFixedHeaderRequestInfo GetInstance()
  8. {
  9. return new MyBigFixedHeaderRequestInfo();
  10. }
  11. }
  12. /// <summary>
  13. /// 下列示例,没有实现逻辑,仅解释思路。
  14. /// </summary>
  15. class MyBigFixedHeaderRequestInfo : IBigFixedHeaderRequestInfo
  16. {
  17. public long BodyLength => throw new NotImplementedException();
  18. public void OnAppendBody(byte[] buffer, int offset, int length)
  19. {
  20. //在这里会一直追加数据体,用户自行实现数据的保存。
  21. }
  22. public bool OnFinished()
  23. {
  24. //触发该方法时,说明数据体接收完毕,返回true时,会触发Receive相关事件,否则不会。
  25. return true;
  26. }
  27. public bool OnParsingHeader(byte[] header)
  28. {
  29. //解析头部
  30. return true;
  31. }
  32. }