boolean read(Buffer b) { byte bool = b.readByte(); if (bool < 0 || bool > 1) { throw new IllegalArgumentException("Malformed: invalid boolean value at byte " + b.pos); } return bool == 1; } }
@Override String readValue(Buffer buffer, int length) { length *= 2; char[] result = new char[length]; for (int i = 0; i < length; i += 2) { byte b = buffer.readByte(); result[i + 0] = HEX_DIGITS[(b >> 4) & 0xf]; result[i + 1] = HEX_DIGITS[b & 0xf]; } return new String(result); } }
static boolean skipValue(Buffer buffer, int wireType) { int remaining = buffer.remaining(); switch (wireType) { case WIRETYPE_VARINT: for (int i = 0; i < remaining; i++) { if (buffer.readByte() >= 0) return true; } return false; case WIRETYPE_FIXED64: return buffer.skip(8); case WIRETYPE_LENGTH_DELIMITED: int length = buffer.readVarint32(); return buffer.skip(length); case WIRETYPE_FIXED32: return buffer.skip(4); default: throw new IllegalArgumentException( "Malformed: invalid wireType " + wireType + " at byte " + buffer.pos); } } }