예제 #1
0
 /// <summary>
 /// Decode a byte[] that represents a collection of messages.
 /// </summary>
 /// <param name="messageSet">The byte[] encode as a message set from kafka.</param>
 /// <returns>Enumerable representing stream of messages decoded from byte[]</returns>
 public static IEnumerable<Message> DecodeMessageSet(byte[] messageSet)
 {
     var stream = new ReadByteStream(messageSet);
     while (stream.HasData)
     {
         var offset = stream.ReadLong();
         foreach (var message in DecodeMessage(offset, stream.ReadIntPrefixedBytes()))
         {
             yield return message;
         }
     }
 }
예제 #2
0
파일: Message.cs 프로젝트: jmucza/kafka-net
        /// <summary>
        /// Decode a byte[] that represents a collection of messages.
        /// </summary>
        /// <param name="messageSet">The byte[] encode as a message set from kafka.</param>
        /// <returns>Enumerable representing stream of messages decoded from byte[]</returns>
        public static IEnumerable<Message> DecodeMessageSet(byte[] messageSet)
        {
            var stream = new ReadByteStream(messageSet);
            while (stream.HasData)
            {
                var offset = stream.ReadLong();
                var size = stream.ReadInt();
                var payload = stream.ReadBytesFromStream(size);

                if (payload.Length < size) throw new InsufficientDataException(payload.Length, size);

                foreach (var message in DecodeMessage(offset, payload))
                {
                    yield return message;
                }
            }
        }