private ChannelBuffer encode(ChannelBuffer buf) { offerred = true; encoder.offer(buf); return ChannelBuffers.wrappedBuffer(encoder.pollAll(new ChannelBuffer[encoder.size()])); }
private ChannelBuffer finishEncode() { if (encoder == null) { offerred = false; return ChannelBuffers.EMPTY_BUFFER; } ChannelBuffer result; if (!offerred) { // No data was offerred to the encoder since the encoder was created. // We should offer at least an empty buffer so that the encoder knows its is encoding empty content. offerred = false; encoder.offer(ChannelBuffers.EMPTY_BUFFER); } if (encoder.finish()) { result = ChannelBuffers.wrappedBuffer(encoder.pollAll(new ChannelBuffer[encoder.size()])); } else { result = ChannelBuffers.EMPTY_BUFFER; } encoder = null; return result; }
@Test public void testNonMessage() throws Exception { boolean result = this.encoder.offer( "Howdy" ); assertTrue( result ); assertEquals( "Howdy", this.encoder.poll() ); }
@Test public void testConnectedFrame() { StompFrame frame = StompFrames.newConnectedFrame( "session-42", Version.VERSION_1_1 ); boolean result = this.encoder.offer( frame ); assertTrue( result ); List<String> lines = getFrameLines(); assertEquals( "CONNECTED", lines.get(0) ); assertContainsLine( "session:session-42", lines ); assertContainsLine( "version:1.1", lines ); }
@Test public void testMessage() throws Exception { StompMessage message = StompMessages.createStompMessage( "/queues/one", "sasquatch!" ); boolean result = this.encoder.offer( message ); assertTrue( result ); StompContentFrame frame = this.encoder.poll(); assertNotNull( frame ); assertEquals( "/queues/one", frame.getHeader( Header.DESTINATION ) ); assertEquals( "sasquatch!", frame.getContent().toString( Charset.forName( "UTF-8" ) ) ); } }
@Test public void testAckFrame() { StompFrame frame = StompFrames.newAckFrame( new DefaultHeaders() ); frame.setHeader( Header.SUBSCRIPTION, "subscription-42" ); frame.setHeader( Header.MESSAGE_ID, "message-84" ); boolean result = this.encoder.offer( frame ); assertTrue( result ); List<String> lines = getFrameLines(); assertEquals( "ACK", lines.get(0) ); assertContainsLine( "subscription:subscription-42", lines ); assertContainsLine( "message-id:message-84", lines ); }
@Test public void testErrorFrame() { StompMessage message = StompMessages.createStompMessage(); message.getHeaders().put( Header.RECEIPT, "some-frame" ); StompFrame inReplyTo = StompFrames.newSendFrame( message ); StompFrame frame = StompFrames.newErrorFrame( "It broke", inReplyTo ); boolean result = this.encoder.offer( frame ); assertTrue( result ); List<String> lines = getFrameLines(); assertEquals( "ERROR", lines.get(0) ); assertContainsLine( "receipt-id:some-frame", lines ); assertContainsContent( "It broke", lines ); }