internal override ReadOnlySequence <byte> Serialize(Channel.OfferParameters offerParameters) { var sequence = new Sequence <byte>(); var writer = new MessagePackWriter(sequence); writer.WriteArrayHeader(offerParameters.RemoteWindowSize is null ? 1 : 2); writer.Write(offerParameters.Name); if (offerParameters.RemoteWindowSize is long remoteWindowSize) { writer.Write(remoteWindowSize); } writer.Flush(); return(sequence); }
internal override unsafe ReadOnlySequence <byte> Serialize(Channel.OfferParameters offerParameters) { var sequence = new Sequence <byte>(); var buffer = sequence.GetSpan(ControlFrameEncoding.GetMaxByteCount(offerParameters.Name.Length)); fixed(byte *pBuffer = buffer) { fixed(char *pName = offerParameters.Name) { int byteLength = ControlFrameEncoding.GetBytes(pName, offerParameters.Name.Length, pBuffer, buffer.Length); sequence.Advance(byteLength); } } return(sequence); }
internal abstract ReadOnlySequence <byte> Serialize(Channel.OfferParameters offerParameters);