@Override public void handleControlFrame(ChannelHandlerContext channelContext, StompFrame frame) { String receiptId = frame.getHeader( Header.RECEIPT_ID ); getClientContext().receiptReceived( receiptId ); }
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 ); }
public void closeRequested(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { this.closeRequest = e; StompFrame closeFrame = StompFrames.newDisconnectFrame(); this.receiptId = closeFrame.getHeader( Header.RECEIPT ); Channels.write( ctx.getChannel(), closeFrame ); }
public static StompFrame newErrorFrame(String message, StompFrame inReplyTo) { StompContentFrame frame = new StompContentFrame( Command.ERROR ); if (inReplyTo != null) { String receiptId = inReplyTo.getHeader( Header.RECEIPT ); if (receiptId != null) { frame.setHeader( Header.RECEIPT_ID, receiptId ); } } byte[] bytes = message.getBytes(); frame.setContent( ChannelBuffers.copiedBuffer( bytes ) ); frame.setHeader( Header.CONTENT_LENGTH, String.valueOf( bytes.length ) ); frame.setHeader( Header.CONTENT_TYPE, "text/plain" ); return frame; }
@Override protected void handleControlFrame(ChannelHandlerContext channelContext, StompFrame frame) { String version = frame.getHeader( Header.VERSION ); if (version != null) { getClientContext().setVersion( Version.forVersionString( version ) ); } Channel channel = channelContext.getChannel(); channelContext.sendUpstream( new UpstreamChannelStateEvent( channel, ChannelState.CONNECTED, channel.getRemoteAddress() ) ); channelContext.getPipeline().replace( this, "stomp-disconnection-negotiator", new StompDisconnectionNegotiator( getClientContext() ) ); getClientContext().setConnectionState( State.CONNECTED ); }