说明
区间适配器,一般用于字符串类的消息,类似“Hello##”,该数据,以开头,以##结尾。当然,区间适配器也能用于二进制数据,但是会有概率发生标识重复的情况。所以,用于二进制时,应当设置较复杂的区间标识。
使用
class MyCustomBetweenAndDataHandlingAdapter : CustomBetweenAndDataHandlingAdapter<MyBetweenAndRequestInfo>
{
public MyCustomBetweenAndDataHandlingAdapter()
{
this.MinSize = 5;//表示,实际数据体不会小于5,例如“**12##12##”数据,解析后会解析成“12##12”
}
public override byte[] StartCode => Encoding.UTF8.GetBytes("**");//可以为0长度字节,意味着没有起始标识。
public override byte[] EndCode => Encoding.UTF8.GetBytes("##");//必须为有效值。
protected override MyBetweenAndRequestInfo GetInstance()
{
throw new NotImplementedException();
}
}
/// <summary>
/// 以**12##12##,Min=5为例。
/// </summary>
class MyBetweenAndRequestInfo : IBetweenAndRequestInfo
{
public void OnParsingBody(byte[] body)
{
//这里的Body应该为12##12
}
public bool OnParsingEndCode(byte[] endCode)
{
return true;//该返回值决定,是否执行Receive
}
public bool OnParsingStartCode(byte[] startCode)
{
return true;
}
}