ParseFrom() статический приватный Метод

static private ParseFrom ( KafkaBinaryReader reader, int size ) : Message
reader Kafka.Client.Serialization.KafkaBinaryReader
size int
Результат Message
Пример #1
0
        internal static BufferedMessageSet ParseFrom(KafkaBinaryReader reader, int size, long initialOffset)
        {
            if (size == 0)
            {
                return(new BufferedMessageSet(Enumerable.Empty <Message>(), initialOffset));
            }

            short errorCode = reader.ReadInt16();

            if (errorCode != ErrorMapping.NoError)
            {
                if (errorCode == ErrorMapping.OffsetOutOfRangeCode)
                {
                    return(new BufferedMessageSet(Enumerable.Empty <Message>(), errorCode, initialOffset));
                }

                throw new KafkaException(errorCode);
            }

            int readed = 2;

            if (readed == size)
            {
                return(new BufferedMessageSet(Enumerable.Empty <Message>(), initialOffset));
            }

            var messages = new List <Message>();

            do
            {
                int msgSize = reader.ReadInt32();
                readed += 4;
                int sizeNotUsed = size - readed;
                if (msgSize > sizeNotUsed || msgSize < 0)
                {
                    if (messages.Count == 0 || msgSize < 0)
                    {
                        string errorMessage =
                            String.Format(
                                "Invalid message size. Read size = {0}, the remaining data size = {1} (possible causes (1) a single message larger than the fetch size; (2) log corruption)",
                                msgSize, sizeNotUsed);
                        throw new InvalidMessageSizeException(errorMessage);
                    }
                    return(new BufferedMessageSet(messages, initialOffset));
                }
                Message msg = Message.ParseFrom(reader, msgSize);
                readed += msgSize;
                messages.Add(msg);
            }while (readed < size);
            if (size != readed)
            {
                throw new KafkaException(ErrorMapping.InvalidFetchSizeCode);
            }

            return(new BufferedMessageSet(messages, initialOffset));
        }
Пример #2
0
        internal static BufferedMessageSet ParseFrom(byte[] bytes)
        {
            var messages  = new List <Message>();
            int processed = 0;
            int length    = bytes.Length - 4;

            while (processed <= length)
            {
                int messageSize = BitConverter.ToInt32(BitWorks.ReverseBytes(bytes.Skip(processed).Take(4).ToArray()), 0);
                messages.Add(Message.ParseFrom(bytes.Skip(processed).Take(messageSize + 4).ToArray()));
                processed += 4 + messageSize;
            }

            return(new BufferedMessageSet(messages));
        }
        public static BufferedMessageSet ParseFrom(KafkaBinaryReader reader, int size, int partitionID)
        {
            int bytesLeft = size;

            if (bytesLeft == 0)
            {
                return(new BufferedMessageSet(Enumerable.Empty <Message>(), partitionID));
            }

            var messages = new List <Message>();

            do
            {
                // Already read last message
                if (bytesLeft < 12)
                {
                    break;
                }

                long offset  = reader.ReadInt64();
                int  msgSize = reader.ReadInt32();
                bytesLeft -= 12;

                if (msgSize > bytesLeft || msgSize < 0)
                {
                    break;
                }

                Message msg = Message.ParseFrom(reader, offset, msgSize, partitionID);
                bytesLeft -= msgSize;
                messages.Add(msg);
            }while (bytesLeft > 0);

            if (bytesLeft > 0)
            {
                reader.ReadBytes(bytesLeft);
            }

            return(new BufferedMessageSet(messages, partitionID));
        }
Пример #4
0
        internal static BufferedMessageSet ParseFrom(KafkaBinaryReader reader, int size)
        {
            if (size == 0)
            {
                return(new BufferedMessageSet(Enumerable.Empty <Message>()));
            }

            short errorCode = reader.ReadInt16();

            if (errorCode != KafkaException.NoError)
            {
                throw new KafkaException(errorCode);
            }

            int readed = 2;

            if (readed == size)
            {
                return(new BufferedMessageSet(Enumerable.Empty <Message>()));
            }

            var messages = new List <Message>();

            do
            {
                int msgSize = reader.ReadInt32();
                readed += 4;
                Message msg = Message.ParseFrom(reader, msgSize);
                readed += msgSize;
                messages.Add(msg);
            }while (readed < size);
            if (size != readed)
            {
                throw new KafkaException(KafkaException.InvalidRetchSizeCode);
            }

            return(new BufferedMessageSet(messages));
        }