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; }
public boolean offer(Object input) { write(getChannel(), input).setSuccess(); return !isEmpty(); } }
@Override protected EncoderEmbedder<ChannelBuffer> newContentEncoder( HttpMessage msg, String acceptEncoding) throws Exception { String contentEncoding = msg.headers().get(HttpHeaders.Names.CONTENT_ENCODING); if (contentEncoding != null && !HttpHeaders.Values.IDENTITY.equalsIgnoreCase(contentEncoding)) { // Encoded already. return null; } ZlibWrapper wrapper = determineWrapper(acceptEncoding); if (wrapper == null) { return null; } if (DetectionUtil.javaVersion() < 7 || noJdkZlibEncoder || windowBits != DEFAULT_JDK_WINDOW_SIZE || memLevel != DEFAULT_JDK_MEM_LEVEL) { return new EncoderEmbedder<ChannelBuffer>( new ZlibEncoder(wrapper, compressionLevel, windowBits, memLevel)); } else { return new EncoderEmbedder<ChannelBuffer>( new JdkZlibEncoder(wrapper, compressionLevel)); } }
@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 ); }
protected List<String> getFrameLines() { ChannelBuffer buffer = this.encoder.poll(); assertNotNull( buffer ); List<String> lines = new ArrayList<String>(); String content = buffer.toString( Charset.forName( "UTF-8" ) ); StringTokenizer tokenizer = new StringTokenizer( content, "\n" ); while ( tokenizer.hasMoreTokens() ) { lines.add( tokenizer.nextToken() ); } return 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" ) ) ); } }
@Before public void setUp() { this.encoder = new EncoderEmbedder<StompContentFrame>( new StompMessageEncoder() ); }
@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 ); }
@Before public void setUp() { this.encoder = new EncoderEmbedder<ChannelBuffer>( new StompFrameEncoder() ); }
@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 ); }