private void handleUnexpectedError( ChannelHandlerContext channelContext, Throwable e ) { try { try { packer.handleFailureMessage( errorTranslator.translate( e ) ); packer.flush(); } catch ( Throwable e1 ) { log.error( String.format( "Session %s: Secondary error while notifying client of problem: %s", session.key(), e.getMessage() ), e ); } finally { channelContext.close(); } } finally { close(); } }
private void onMessagDone() { if ( inFlight.decrementAndGet() == 0 ) { try { packer.flush(); } catch ( IOException e ) { throw new RuntimeException( e ); } } } }
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 ); }
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(); }