@Override public void handleSuccessMessage( Map<String,Object> metadata ) throws IOException { packer.packStructHeader( 1, (char) MessageTypes.MSG_SUCCESS ); packRawMap( metadata ); onMessageComplete.run(); }
@Override public void handleRecordMessage( Record item ) throws IOException { Object[] fields = item.fields(); packer.packStructHeader( 1, (char) MessageTypes.MSG_RECORD ); packer.packListHeader( fields.length ); for ( int i = 0; i < fields.length; i++ ) { packValue( fields[i] ); } onMessageComplete.run(); }
public SocketProtocolV1( final LogService logging, Session session, Channel channel ) { this.log = logging.getInternalLog( getClass() ); this.session = session; this.errorTranslator = new ErrorTranslator( logging ); this.output = new ChunkedOutput( channel, DEFAULT_BUFFER_SIZE ); this.input = new ChunkedInput(); this.packer = new PackStreamMessageFormatV1.Writer( new PackStream.Packer( output ), output.messageBoundaryHook() ); this.unpacker = new PackStreamMessageFormatV1.Reader( new PackStream.Unpacker( input ) ); this.bridge = new TransportBridge( log ).reset( session, packer, new Runnable() { @Override public void run() { onMessagDone(); } } ); }
private byte[] serialize( int chunkSize, Message... msgs ) throws IOException { byte[][] serialized = new byte[msgs.length][]; for ( int i = 0; i < msgs.length; i++ ) { RecordingByteChannel channel = new RecordingByteChannel(); PackStreamMessageFormatV1.Writer format = new PackStreamMessageFormatV1.Writer( new PackStream.Packer( new BufferedChannelOutput( channel ) ), NO_OP ); format.write( msgs[i] ).flush(); serialized[i] = channel.getBytes(); } return Chunker.chunk( chunkSize, serialized ); } }
private <T extends Message> T serializeAndDeserialize( T msg ) throws IOException { RecordingByteChannel channel = new RecordingByteChannel(); MessageFormat.Reader reader = new PackStreamMessageFormatV1.Reader( new PackStream.Unpacker( new BufferedChannelInput( 16 ).reset( channel ) ) ); MessageFormat.Writer writer = new PackStreamMessageFormatV1.Writer( new PackStream.Packer( new BufferedChannelOutput( channel ) ), NO_OP ); writer.write( msg ).flush(); channel.eof(); return unpack( reader, channel ); }
@Override public void handleRunMessage( String statement, Map<String,Object> params ) throws IOException { packer.packStructHeader( 2, (char) MessageTypes.MSG_RUN ); packer.pack( statement ); packRawMap( params ); onMessageComplete.run(); }
public static byte[] serialize( Message... messages ) throws IOException { final RecordingByteChannel rawData = new RecordingByteChannel(); final MessageFormat.Writer packer = new PackStreamMessageFormatV1.Writer( new PackStream.Packer( new BufferedChannelOutput( rawData )), NO_OP ); for ( Message message : messages ) { packer.write( message ); } packer.flush(); return rawData.getBytes(); }
private void packRawMap( Map<String,Object> map ) throws IOException { packer.packMapHeader( map.size() ); if ( map.size() > 0 ) { for ( Map.Entry<String,Object> entry : map.entrySet() ) { packer.pack( entry.getKey() ); packValue( entry.getValue() ); } } }