QuicDotNet.Frames.StreamFrame.SetData C# (CSharp) Method

SetData() public method

public SetData ( [ data, bool fin ) : void
data [
fin bool
return void
        public void SetData([NotNull] byte[] data, bool fin)
        {
            if (this._data != null)
                throw new InvalidOperationException("Stream frame is not prototyped and is already hydrated with binary data");

            this._data = data;
            this.Fin = fin;
            
            // A stream frame must always have either non-zero data length or the FIN bit set.
            Debug.Assert(this.Fin || this._data.Length > 0);

            // Clear pre-calculated metadata, as slen and olen could have changed.
            this._metadataLength = null;
            this._slen = null;
            this._olen = null;
        }

Usage Example

        public void Stream1ClientInchoateGoogleCachedServerParametersClientMessage()
        {
            var tags = Messages.ClientHandshakeMessageTest.ClientInchoateGoogleCachedServerParametersClientMessageFactory.Value;
            var message2 = new ClientHandshakeMessage(tags);
            var messageBytes2 = message2.ToByteArray();

            var stream = new StreamFrame(1, 0);
            stream.SetData(messageBytes2, false);

            var streamBytes = stream.ToByteArray();
            Assert.IsNotNull(streamBytes);
            Debug.WriteLine(streamBytes.GenerateHexDumpWithASCII());

            //Assert.AreEqual(streamBytes.Length, FrameLibrary.ClientInchoateGoogleCachedServerParametersStream1Subset.Length);

            // Soft warn
            for (var i = 0; i < streamBytes.Length; i++)
            {
                if (streamBytes[i] != FrameLibrary.ClientInchoateGoogleCachedServerParametersStream1Subset[i])
                    Debug.WriteLine($"Byte difference at position {i}: generated byte is {streamBytes[i]:x2} but reference byte was {FrameLibrary.ClientInchoateGoogleCachedServerParametersStream1Subset[i]:x2}");
            }

            // Hard test fail
            for (var i = 0; i < streamBytes.Length; i++)
            {
                Assert.AreEqual(streamBytes[i], FrameLibrary.ClientInchoateGoogleCachedServerParametersStream1Subset[i], $"Byte difference at position {i}: generated byte is {streamBytes[i]:x2} but reference byte was {FrameLibrary.ClientInchoateGoogleCachedServerParametersStream1Subset[i]:x2}");
            }
        }