protected void handleStompFrame(ChannelHandlerContext channelContext, StompFrame frame) { if ( frame.getCommand().equals( this.command ) ) { handleControlFrame( channelContext, frame ); } }
protected void writeHeader(StompFrame frame, ChannelBuffer buffer) { buffer.writeBytes( frame.getCommand().getBytes() ); buffer.writeByte( NEWLINE ); Set<String> headerNames = frame.getHeaderNames(); for (String name : headerNames) { if (name.equalsIgnoreCase( "content-length" )) { continue; } buffer.writeBytes( name.getBytes() ); buffer.writeBytes( HEADER_DELIM ); buffer.writeBytes( frame.getHeader( name ).getBytes() ); buffer.writeByte( NEWLINE ); } if (frame instanceof StompContentFrame) { int length = ((StompContentFrame) frame).getContent().readableBytes(); buffer.writeBytes( Header.CONTENT_LENGTH.getBytes() ); buffer.writeBytes( HEADER_DELIM ); buffer.writeBytes( ("" + length).getBytes() ); buffer.writeByte( NEWLINE ); } buffer.writeByte( NEWLINE ); }
@Test public void testDecodeNullTerminatedMessage() throws Exception { ChannelBuffer bytes = read( "null-terminated.msg", true ); this.decoder.offer( bytes ); StompFrame frame = this.decoder.poll(); assertNotNull( frame ); assertTrue( frame instanceof StompContentFrame ); assertEquals( Command.SEND, frame.getCommand() ); assertEquals( "This is my message.\n", ((StompContentFrame) frame).getContent().toString( Charset.forName( "UTF-8" ) ) ); }
@Test public void testDecodeIncomplete() throws Exception { ChannelBuffer bytes = read( "incomplete-connect.msg", false ); this.decoder.offer( bytes ); StompFrame frame = this.decoder.poll(); assertNull( frame ); this.decoder.offer( ChannelBuffers.copiedBuffer( new byte[] { '\n', 0x00 } ) ); frame = this.decoder.poll(); assertNotNull( frame ); assertEquals( Command.CONNECT, frame.getCommand() ); }