using SuperSocket.ProtoBase;
|
using System;
|
using System.Buffers;
|
using System.Collections.Generic;
|
using System.Text;
|
using System.Linq;
|
|
namespace IStation.Server
|
{
|
/// <summary>
|
///
|
/// </summary>
|
internal class PipeLineFilter : FixedHeaderPipelineFilter<PackageInfo>
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public PipeLineFilter() : base(20) { }
|
|
/// <summary>
|
///
|
/// </summary>
|
protected override int GetBodyLengthFromHeader(ref ReadOnlySequence<byte> buffer)
|
{
|
if (buffer.Length < 20)
|
return default;
|
return BitConverter.ToInt32(buffer.ToArray(), 16);
|
}
|
|
/// <summary>
|
/// 将数据包解析成 MyPackage 的实例
|
/// </summary>
|
protected override PackageInfo DecodePackage(ref ReadOnlySequence<byte> buffer)
|
{
|
if (buffer.Length < 20)
|
return default;
|
var reader = buffer.ToArray();
|
return new PackageInfo(reader);
|
}
|
|
}
|
}
|