namespace NewLife.Messaging;
/// <summary>帧长度超过上限。帧泵在整帧模式下发现单帧超过 <see cref="MessagePump.MaxFrameSize"/> 时抛出</summary>
/// <remarks>
/// <para>继承 <see cref="InvalidOperationException" />:既有按 <see cref="InvalidOperationException" /> 捕获的调用方行为不变,
/// 协议层据此把「消息过大」与「帧损坏」区分开来——WebSocket 前者的关闭码是 1009(Message Too Big),后者是 1002(Protocol Error)。</para>
/// </remarks>
public class FrameTooLargeException : InvalidOperationException
{
/// <summary>帧长度</summary>
public Int64 FrameLength { get; }
/// <summary>长度上限</summary>
public Int32 MaxSize { get; }
/// <summary>实例化</summary>
/// <param name="frameLength">帧长度</param>
/// <param name="maxSize">长度上限</param>
public FrameTooLargeException(Int64 frameLength, Int32 maxSize)
: base($"帧长度 {frameLength} 超过上限 {maxSize},拒绝为超大帧无限缓冲")
{
FrameLength = frameLength;
MaxSize = maxSize;
}
}
|