Browse Source

Replace buffers used during encoding to Pooled buffers. Issue #65

master
Nikita 12 years ago
parent
commit
85e3432e9a
  1. 12
      src/main/java/com/corundumstudio/socketio/SocketIOEncoder.java
  2. 2
      src/main/java/com/corundumstudio/socketio/parser/Encoder.java

12
src/main/java/com/corundumstudio/socketio/SocketIOEncoder.java

@ -22,7 +22,6 @@ import static io.netty.handler.codec.http.HttpHeaders.Names.CONTENT_TYPE;
import static io.netty.handler.codec.http.HttpHeaders.Values.KEEP_ALIVE;
import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener;
@ -52,10 +51,10 @@ import org.slf4j.LoggerFactory;
import com.corundumstudio.socketio.messages.AuthorizeMessage;
import com.corundumstudio.socketio.messages.BaseMessage;
import com.corundumstudio.socketio.messages.HttpMessage;
import com.corundumstudio.socketio.messages.WebSocketPacketMessage;
import com.corundumstudio.socketio.messages.WebsocketErrorMessage;
import com.corundumstudio.socketio.messages.XHRErrorMessage;
import com.corundumstudio.socketio.messages.HttpMessage;
import com.corundumstudio.socketio.messages.XHRNewChannelMessage;
import com.corundumstudio.socketio.messages.XHROutMessage;
import com.corundumstudio.socketio.messages.XHRPacketMessage;
@ -169,11 +168,10 @@ public class SocketIOEncoder extends ChannelOutboundHandlerAdapter implements Di
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
if (!(msg instanceof BaseMessage)) {
super.write(ctx, msg, promise);
return;
}
// TODO use it!
// ByteBuf out = ctx.alloc().ioBuffer();
ByteBuf out = Unpooled.buffer();
ByteBuf out = ctx.alloc().ioBuffer();
if (msg instanceof AuthorizeMessage) {
handle((AuthorizeMessage) msg, ctx.channel(), out);
@ -218,7 +216,7 @@ public class SocketIOEncoder extends ChannelOutboundHandlerAdapter implements Di
WebSocketFrame res = new TextWebSocketFrame(out);
log.trace("Out message: {} sessionId: {}", new Object[] {
out.toString(CharsetUtil.UTF_8), webSocketPacketMessage.getSessionId()});
channel.write(res);
channel.writeAndFlush(res);
if (!out.isReadable()) {
out.release();
}
@ -227,7 +225,7 @@ public class SocketIOEncoder extends ChannelOutboundHandlerAdapter implements Di
private void handle(WebsocketErrorMessage websocketErrorMessage, Channel channel, ByteBuf out) throws IOException {
encoder.encodePacket(websocketErrorMessage.getPacket(), out);
TextWebSocketFrame frame = new TextWebSocketFrame(out);
channel.write(frame);
channel.writeAndFlush(frame);
}
@Override

2
src/main/java/com/corundumstudio/socketio/parser/Encoder.java

@ -50,8 +50,6 @@ public class Encoder {
break;
}
// TODO user polled
// ByteBuf packetBuffer = Unpooled.buffer();
ByteBuf packetBuffer = allocator.ioBuffer();
int len = encodePacket(packet, packetBuffer);
byte[] lenBytes = toChars(len);

Loading…
Cancel
Save