public static List<Message> messages( byte[] bytes ) throws IOException { PackStreamMessageFormatV1.Reader unpacker = reader( bytes ); RecordingMessageHandler consumer = new RecordingMessageHandler(); try { while ( unpacker.hasNext() ) { unpacker.read( consumer ); } return consumer.asList(); } catch ( Throwable e ) { throw new IOException( "Failed to deserialize response, '" + e.getMessage() + "'. Messages read so " + "far: \n" + consumer.asList() + "\n" + "Raw data: \n" + HexPrinter.hex( bytes ) ); } }
private <T extends Message> T unpack( MessageFormat.Reader reader, RecordingByteChannel channel ) { // Unpack String serialized = HexPrinter.hex( channel.getBytes() ); RecordingMessageHandler messages = new RecordingMessageHandler(); try { reader.read( messages ); } catch ( Throwable e ) { throw new AssertionError( "Failed to unpack message, wire data was:\n" + serialized + "[" + channel .getBytes().length + "b]", e ); } return (T) messages.asList().get( 0 ); }
public static Message message( byte[] bytes ) throws IOException { PackStreamMessageFormatV1.Reader unpacker = reader( bytes ); RecordingMessageHandler consumer = new RecordingMessageHandler(); try { if ( unpacker.hasNext() ) { unpacker.read( consumer ); return consumer.asList().get( 0 ); } throw new IllegalArgumentException( "Expected a message in " + HexPrinter.hex( bytes ) ); } catch ( Throwable e ) { throw new IOException( "Failed to deserialize response, '" + e.getMessage() + "'. Messages read so " + "far: \n" + consumer.asList() + "\n" + "Raw data: \n" + HexPrinter.hex( bytes ), e ); } }