Exemple #1
0
        public ICollection <ArraySegment <byte> > Serialize(MqttBasePacket packet)
        {
            if (packet == null)
            {
                throw new ArgumentNullException(nameof(packet));
            }

            using (var stream = new MemoryStream(128))
                using (var writer = new MqttPacketWriter(stream))
                {
                    var fixedHeader     = SerializePacket(packet, writer);
                    var remainingLength = (int)stream.Length;
                    writer.Write(fixedHeader);
                    MqttPacketWriter.WriteRemainingLength(remainingLength, writer);
                    var headerLength = (int)stream.Length - remainingLength;

#if NET461 || NET452 || NETSTANDARD2_0
                    var buffer = stream.GetBuffer();
#else
                    var buffer = stream.ToArray();
#endif
                    return(new List <ArraySegment <byte> >
                    {
                        new ArraySegment <byte>(buffer, remainingLength, headerLength),
                        new ArraySegment <byte>(buffer, 0, remainingLength)
                    });
                }
        }