/** * Creates a msgpack pipe from an {@link InputStream}. */ public static Pipe newPipe(InputStream in, boolean numeric) throws IOException { MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(in); return newPipe(unpacker, numeric); }
/** * Creates a msgpack pipe from an {@link MessageBufferInput}. */ public static Pipe newPipe(MessageBufferInput in, boolean numeric) throws IOException { MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(in); return newPipe(unpacker, numeric); }
/** * Merges the {@code message} from the {@link MessageBufferInput} using the given {@code schema}. */ public static <T> void mergeFrom(MessageBufferInput in, T message, Schema<T> schema, boolean numeric) throws IOException { MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(in); try { mergeFrom(unpacker, message, schema, numeric); } finally { unpacker.close(); } }
/** * Merges the {@code message} from the {@link InputStream} using the given {@code schema}. */ public static <T> void mergeFrom(InputStream in, T message, Schema<T> schema, boolean numeric) throws IOException { MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(in); try { mergeFrom(unpacker, message, schema, numeric); } finally { unpacker.close(); } }
/** * Parses the {@code messages} from the stream using the given {@code schema}. */ public static <T> List<T> parseListFrom(MessageBufferInput in, Schema<T> schema, boolean numeric) throws IOException { MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(in); try { return parseListFrom(unpacker, schema, numeric); } finally { unpacker.close(); } }
/** * Parses the {@code messages} from the stream using the given {@code schema}. */ public static <T> List<T> parseListFrom(InputStream in, Schema<T> schema, boolean numeric) throws IOException { MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(in); try { return parseListFrom(unpacker, schema, numeric); } finally { unpacker.close(); } }
/** * Merges the {@code message} with the byte array using the given {@code schema}. */ public static <T> void mergeFrom(byte[] data, int offset, int length, T message, Schema<T> schema, boolean numeric) throws IOException { ArrayBufferInput bios = new ArrayBufferInput(data, offset, length); MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(bios); try { mergeFrom(unpacker, message, schema, numeric); } finally { unpacker.close(); } }
@Override public KeyValue next() throws IOException { if (mReader.next(mKey, mValue)) { MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(mKey.getBytes()); int mapSize = unpacker.unpackMapHeader(); long offset = 0; long timestamp = -1; byte[] keyBytes = EMPTY_BYTES; for (int i = 0; i < mapSize; i++) { int key = unpacker.unpackInt(); switch (key) { case KAFKA_MESSAGE_OFFSET: offset = unpacker.unpackLong(); break; case KAFKA_MESSAGE_TIMESTAMP: timestamp = unpacker.unpackLong(); break; case KAFKA_HASH_KEY: int keySize = unpacker.unpackBinaryHeader(); keyBytes = new byte[keySize]; unpacker.readPayload(keyBytes); break; } } unpacker.close(); return new KeyValue(offset, keyBytes, Arrays.copyOfRange(mValue.getBytes(), 0, mValue.getLength()), timestamp); } else { return null; } }
/** * Parse the message pack stream. * This method can be used for converting query * result from normal query response where exactly one QueryResult returned * * @param is * The MessagePack format input stream * @return QueryResult * */ public QueryResult parse(final InputStream is) { MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(is); return parse(unpacker); }
/** * Traverse over the whole message pack stream. * This method can be used for converting query results in chunk. * * @param is * The MessagePack format input stream * @return an Iterable over the QueryResult objects * */ public Iterable<QueryResult> traverse(final InputStream is) { MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(is); return () -> { return new Iterator<QueryResult>() { @Override public boolean hasNext() { try { return unpacker.hasNext(); } catch (IOException e) { throw new InfluxDBException(e); } } @Override public QueryResult next() { return parse(unpacker); } }; }; }
/** * Create corresponding InfluxDBException from the message pack error body. * @param messagePackErrorBody * @return */ public static InfluxDBException buildExceptionForErrorState(final InputStream messagePackErrorBody) { try { MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(messagePackErrorBody); ImmutableMapValue mapVal = (ImmutableMapValue) unpacker.unpackValue(); return InfluxDBException.buildExceptionFromErrorMessage( mapVal.map().get(new ImmutableStringValueImpl("error")).toString()); } catch (Exception e) { return new InfluxDBException(e); } } }
/** * Parse the message pack stream. * This method can be used for converting query * result from normal query response where exactly one QueryResult returned * * @param is * The MessagePack format input stream * @return QueryResult * */ public QueryResult parse(final InputStream is) { MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(is); return parse(unpacker); }
@Override public BElement deserialize(InputStream in) { try (var unpacker = MessagePack.newDefaultUnpacker(in)) { return this.unpackAny(unpacker); } catch (IOException e) { throw new BeanSerializationException("Error while deserialize input stream", e); } } }
/** * Create corresponding InfluxDBException from the message pack error body. * @param messagePackErrorBody * @return */ public static InfluxDBException buildExceptionForErrorState(final InputStream messagePackErrorBody) { try { MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(messagePackErrorBody); ImmutableMapValue mapVal = (ImmutableMapValue) unpacker.unpackValue(); return InfluxDBException.buildExceptionFromErrorMessage( mapVal.map().get(new ImmutableStringValueImpl("error")).toString()); } catch (Exception e) { return new InfluxDBException(e); } } }
@Override public T deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { var messagePackExtensionType = (MessagePackExtensionType) jsonParser.getEmbeddedObject(); if (messagePackExtensionType.getType() != typeId) { log.error("Tried to parse a bad type ({})", messagePackExtensionType.getType()); throw new JsonParseException(jsonParser, "Bad custom type"); } return constructor.apply( MessagePack.newDefaultUnpacker(messagePackExtensionType.getData()).unpackLong() ); } }
@Override protected String getSingleStringRawState( String state ) throws Exception { return MessagePack.newDefaultUnpacker( Base64.getDecoder().decode( state ) ) .unpackValue().asStringValue().asString(); } }
@Override protected String getStringFromValueState( String state, String key ) throws Exception { return MessagePack.newDefaultUnpacker( Base64.getDecoder().decode( state ) ) .unpackValue().asMapValue() .map().get( ValueFactory.newString( key ) ) .asStringValue().asString(); } }
private void assertRecord0(byte[] formatted, long expectedTime) throws IOException { try (MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(formatted)) { Map<Value, Value> map = unpacker.unpackValue().asMapValue().map(); assertEquals(4, map.size()); assertEquals(expectedTime, map.get(KEY_TIME).asNumberValue().toLong()); assertEquals("first", map.get(KEY_NAME).asStringValue().asString()); assertEquals(42, map.get(KEY_AGE).asNumberValue().toInt()); assertEquals("hello@world.com", map.get(KEY_EMAIL).asStringValue().asString()); } }
private void assertRecord1(byte[] formatted, long expectedTime) throws IOException { try (MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(formatted)) { Map<Value, Value> map = unpacker.unpackValue().asMapValue().map(); assertEquals(4, map.size()); assertEquals(expectedTime, map.get(KEY_TIME).asNumberValue().toLong()); assertEquals("second", map.get(KEY_NAME).asStringValue().asString()); assertEquals(55, map.get(KEY_AGE).asNumberValue().toInt()); assertEquals("zzzzzz", map.get(KEY_COMMENT).asStringValue().asString()); } }
private void assertRecord2(byte[] formatted, long expectedTime) throws IOException { try (MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(formatted)) { Map<Value, Value> map = unpacker.unpackValue().asMapValue().map(); assertEquals(4, map.size()); assertEquals(expectedTime, map.get(KEY_TIME).asNumberValue().toLong()); assertEquals("third", map.get(KEY_NAME).asStringValue().asString()); assertEquals(99, map.get(KEY_AGE).asNumberValue().toInt()); assertEquals("knight", map.get(KEY_JOB).asStringValue().asString()); } }