/// <summary>Initializes a new control frame of the given type. The <see cref="Data"/> array may be filled with garbage.</summary> public SPDYFrame(SPDYFrameType type, SPDYFrameFlags flags, int length) { if ((uint)length > 0xFFFFFF) { throw new ArgumentOutOfRangeException(nameof(length)); } _data = ArrayPool <byte> .Shared.Rent(length); _streamId = (uint)type | 0x80030000; _flagsAndLength = ((uint)flags << 24) | (uint)length; }
/// <summary>Indicates whether the frame has all the given flags.</summary> public bool HasFlags(SPDYFrameFlags flags) => (Flags & flags) == flags;