Sic.Framework-Nanjing-Baishi/MECF.Framework.Common/MECF/Framework/Common/Communications/Tcp/Socket/Framing/FixedLengthFrameDecoder.cs

39 lines
963 B
C#

using System;
using MECF.Framework.Common.Communications.Tcp.Socket.Framing.Base;
namespace MECF.Framework.Common.Communications.Tcp.Socket.Framing
{
public sealed class FixedLengthFrameDecoder : IFrameDecoder
{
private readonly int _fixedFrameLength;
public int FixedFrameLength => _fixedFrameLength;
public FixedLengthFrameDecoder(int fixedFrameLength)
{
if (fixedFrameLength <= 0)
{
throw new ArgumentOutOfRangeException("fixedFrameLength");
}
_fixedFrameLength = fixedFrameLength;
}
public bool TryDecodeFrame(byte[] buffer, int offset, int count, out int frameLength, out byte[] payload, out int payloadOffset, out int payloadCount)
{
frameLength = 0;
payload = null;
payloadOffset = 0;
payloadCount = 0;
if (count < FixedFrameLength)
{
return false;
}
frameLength = FixedFrameLength;
payload = buffer;
payloadOffset = offset;
payloadCount = FixedFrameLength;
return true;
}
}
}