public int readTag() throws IOException
    {
        if (!buffer.hasRemaining())
        {
            lastTag = 0;
            return 0;
        }

        final int tag = readRawVarint32();
        if (tag >>> TAG_TYPE_BITS == 0)
        {
            // If we actually read zero, that's not a valid tag.
            throw ProtobufException.invalidTag();
        }
        lastTag = tag;
        return tag;
    }
public int readTag ( ) throws IOException { if ( ! buffer . hasRemaining ( ) ) { lastTag = 0 ; return 0 ; } final int tag = readRawVarint32 ( ) ; if ( tag > > > TAG_TYPE_BITS == 0 ) { throw ProtobufException . invalidTag ( ) ; } lastTag = tag ; return tag ; }
Attempt to read a field tag, returning zero if we have reached EOF. Protocol message parsers use this to read
tags, since a protocol message may legally end wherever a tag occurs, and zero is not a valid tag number.