@Override protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer, VoidEnum state) throws Exception { return StompFrameCodec.INSTANCE.decode( buffer ); } }
@Override protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception { if (msg instanceof StompFrame) { return StompFrameCodec.INSTANCE.encode( (StompFrame) msg ); } return msg; }
public ChannelBuffer encode(StompFrame frame) throws Exception { ChannelBuffer buffer = newBuffer( frame ); writeHeader( frame, buffer ); writeContent( frame, buffer ); return buffer; }
public StompFrame decode(ChannelBuffer buffer) throws Exception { FrameHeader header = decodeHeader( buffer ); if (header == null) { return null; } int len = header.getContentLength(); ChannelBuffer content = null; if (len <= 0) { content = readUntilNull( buffer ); } else { content = readUntil( buffer, len ); } StompFrame frame = null; if (content != null) { if (header.isContentFrame()) { frame = new StompContentFrame( header, content ); } else { frame = new StompControlFrame( header ); } } return frame; }
protected FrameHeader decodeHeader(ChannelBuffer buffer) { FrameHeader header = null; while (buffer.readable()) { int nonNewLineBytes = buffer.bytesBefore( (byte) '\n' ); if (nonNewLineBytes < 0) { break; } if (nonNewLineBytes == 0) { buffer.readByte(); break; } if (nonNewLineBytes >= 0) { ChannelBuffer line = buffer.readBytes( nonNewLineBytes ); buffer.readByte(); header = processHeaderLine( header, line.toString( UTF_8 ) ); } } return header; }
@Override protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception { if ( msg instanceof StompFrame ) { ChannelBuffer buffer = StompFrameCodec.INSTANCE.encode( (StompFrame) msg ); WebSocketFrame webSocketFrame = new DefaultWebSocketFrame(FrameType.TEXT, buffer); return webSocketFrame; } return msg; }
@Override protected Object decode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception { if (msg instanceof WebSocketFrame) { WebSocketFrame webSocketFrame = (WebSocketFrame) msg; ChannelBuffer buffer = webSocketFrame.getBinaryData(); StompFrame stompFrame = StompFrameCodec.INSTANCE.decode( buffer ); return stompFrame; } return msg; }
@Override protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception { if ( msg instanceof StompFrame ) { ChannelBuffer buffer = StompFrameCodec.INSTANCE.encode( (StompFrame) msg ); HttpRequest httpReq = new DefaultHttpRequest( HttpVersion.HTTP_1_1, HttpMethod.POST, this.uri ); httpReq.setContent( buffer ); return httpReq; } return msg; }
@Override protected Object decode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception { if (msg instanceof HttpMessage) { String contentType = ((HttpMessage) msg).getHeader( "content-type" ); if (contentType != null) { int semiLoc = contentType.indexOf( ";" ); if (semiLoc > 0) { contentType = contentType.substring( 0, semiLoc ); } contentType = contentType.trim(); if (contentType.equals( "text/stomp" )) { HttpMessage httpMessage = (HttpMessage) msg; ChannelBuffer buffer = httpMessage.getContent(); StompFrame stompFrame = StompFrameCodec.INSTANCE.decode( buffer ); return stompFrame; } } } return msg; }