@Override public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception { if (e.getCause() instanceof WebSocketHandshakeException) { DefaultHttpResponse response = new DefaultHttpResponse(HTTP_1_1, HttpResponseStatus.BAD_REQUEST); response.setContent(ChannelBuffers.wrappedBuffer(e.getCause().getMessage().getBytes())); ctx.getChannel().write(response).addListener(ChannelFutureListener.CLOSE); } else { ctx.getChannel().close(); } }
long startTimeInMs) throws Exception { ChannelBuffer responseContent = ChannelBuffers.dynamicBuffer(this.responseValue.length); responseContent.writeBytes(responseValue); HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK); response.setHeader(CONTENT_TYPE, "binary"); response.setHeader(CONTENT_TRANSFER_ENCODING, "binary"); response.setContent(responseContent); response.setHeader(CONTENT_LENGTH, response.getContent().readableBytes()); this.messageEvent.getChannel().write(response);
protected void sendError(ChannelHandlerContext ctx, String message, HttpResponseStatus status) { HttpResponse response = new DefaultHttpResponse(HTTP_1_1, status); response.headers().add(CONTENT_TYPE, "text/plain; charset=UTF-8"); // Put shuffle version into http header response.headers().add(ShuffleHeader.HTTP_HEADER_NAME, ShuffleHeader.DEFAULT_HTTP_HEADER_NAME); response.headers().add(ShuffleHeader.HTTP_HEADER_VERSION, ShuffleHeader.DEFAULT_HTTP_HEADER_VERSION); response.setContent( ChannelBuffers.copiedBuffer(message, CharsetUtil.UTF_8)); // Close the connection as soon as the error message is sent. ctx.getChannel().write(response).addListener(ChannelFutureListener.CLOSE); }
public ChannelBuffer toChannelBuffer() { ChannelBuffer[] buffers = new ChannelBuffer[value.size()]; for (int i = 0; i < buffers.length; i++) { buffers[i] = ChannelBuffers.copiedBuffer(value.get(i), charset); } return ChannelBuffers.wrappedBuffer(buffers); }
private static ChannelBuffer copiedBuffer(ByteOrder endianness, CharBuffer buffer, Charset charset) { CharBuffer src = buffer; ByteBuffer dst = encodeString(src, charset); ChannelBuffer result = wrappedBuffer(endianness, dst.array()); result.writerIndex(dst.remaining()); return result; }
public ChannelBuffer encodeDataFrame(int streamId, boolean last, ChannelBuffer data) { byte flags = last ? SPDY_DATA_FLAG_FIN : 0; ChannelBuffer header = ChannelBuffers.buffer(ByteOrder.BIG_ENDIAN, SPDY_HEADER_SIZE); header.writeInt(streamId & 0x7FFFFFFF); header.writeByte(flags); header.writeMedium(data.readableBytes()); return ChannelBuffers.wrappedBuffer(header, data); }
String key = WebSocketUtil.base64(ChannelBuffers.wrappedBuffer(nonce)); ChannelBuffer sha1 = WebSocketUtil.sha1(ChannelBuffers.copiedBuffer(acceptSeed, CharsetUtil.US_ASCII)); expectedChallengeResponseString = WebSocketUtil.base64(sha1); ChannelFuture future = channel.write(request); future.addListener(new ChannelFutureListener() {
ChannelBuffer header = dynamicBuffer( channel.getConfig().getBufferFactory()); encodeInitialLine(header, m); encodeHeaders(header, m); header.writeByte(CR); header.writeByte(LF); "if Transfer-Encoding is chunked."); } else { return wrappedBuffer(header, content); transferEncodingChunked = false; if (chunk instanceof HttpChunkTrailer) { ChannelBuffer trailer = dynamicBuffer( channel.getConfig().getBufferFactory()); trailer.writeByte((byte) '0'); trailer.writeByte(CR); int contentLength = content.readableBytes(); return wrappedBuffer( copiedBuffer( Integer.toHexString(contentLength), CharsetUtil.US_ASCII), wrappedBuffer(CRLF), content.slice(content.readerIndex(), contentLength), wrappedBuffer(CRLF));
byte[] in = new byte[compressed.readableBytes()]; compressed.readBytes(in); z.next_in = in; z.next_in_index = 0; ChannelBuffer decompressed = ChannelBuffers.dynamicBuffer( compressed.order(), out.length, ctx.getChannel().getConfig().getBufferFactory()); z.next_out = out; z.next_out_index = 0;
/** * Writes all error responses to the client. * * TODO REST-Server 1. collect error stats * * @param messageEvent - for retrieving the channel details * @param status - error code * @param message - error message */ public static void writeErrorResponse(MessageEvent messageEvent, HttpResponseStatus status, String message) { // Create the Response object HttpResponse response = new DefaultHttpResponse(HTTP_1_1, status); response.setHeader(CONTENT_TYPE, "text/plain; charset=UTF-8"); response.setContent(ChannelBuffers.copiedBuffer("Failure: " + status.toString() + ". " + message + "\r\n", CharsetUtil.UTF_8)); response.setHeader(CONTENT_LENGTH, response.getContent().readableBytes()); // Write the response to the Netty Channel messageEvent.getChannel().write(response); } }
private ChannelFuture finishEncode(final ChannelHandlerContext ctx, final ChannelEvent evt) { ChannelFuture future = Channels.succeededFuture(ctx.getChannel()); ctx.sendDownstream(evt); final ChannelBuffer footer = ChannelBuffers.dynamicBuffer(ctx.getChannel().getConfig().getBufferFactory()); final boolean gzip = isGzip(); synchronized (deflater) { footer.writeBytes(gzipHeader); int crcValue = (int) crc.getValue(); int uncBytes = deflater.getTotalIn(); footer.writeByte(crcValue); footer.writeByte(crcValue >>> 8); footer.writeByte(crcValue >>> 16); footer.writeByte(crcValue >>> 24); future.addListener(new ChannelFutureListener() { public void operationComplete(ChannelFuture future) throws Exception { ctx.sendDownstream(evt);
inboundMaskingKey = null; int b = buffer.readByte(); frameFin = (b & 0x80) != 0; int frameRsv = (b & 0x70) >> 4; b = buffer.readByte(); boolean frameMasked = (b & 0x80) != 0; int framePayloadLen1 = (b & 0x7F); framePayloadLen = buffer.readUnsignedShort(); if (framePayloadLen < 126) { protocolViolation(channel, "invalid data frame length (not using minimal length encoding)"); EncodingHybiFrame close = new EncodingHybiFrame(OPCODE_CLOSE, true, 0, outboundMaskingKey, ChannelBuffers.buffer(0)); channel.write(close).addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture channelFuture) throws Exception {
@Override protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception { if (!(msg instanceof ChannelBuffer) || finished.get()) { return msg; } final ChannelBuffer uncompressed = (ChannelBuffer) msg; final int uncompressedLen = uncompressed.readableBytes(); if (uncompressedLen == 0) { return uncompressed; } final byte[] in = new byte[uncompressedLen]; uncompressed.readBytes(in); final int sizeEstimate = estimateCompressedSize(uncompressedLen); final ChannelBuffer compressed = ChannelBuffers.dynamicBuffer(sizeEstimate, channel.getConfig().getBufferFactory()); synchronized (deflater) { if (isGzip()) { crc.update(in); if (writeHeader) { compressed.writeBytes(gzipHeader); writeHeader = false; } } deflater.setInput(in); while (!deflater.needsInput()) { deflate(compressed); } } return compressed; }
ChannelBuffer header = channel.getConfig().getBufferFactory().getBuffer(body.order(), lengthFieldLength); body.readableBytes() + lengthFieldLength : body.readableBytes(); switch (lengthFieldLength) { case 1: throw new Error("should not reach here"); return wrappedBuffer(header, body);
final DataOutputBuffer dob = new DataOutputBuffer(); header.write(dob); ch.write(wrappedBuffer(dob.getData(), 0, dob.getLength())); final File spillfile = new File(mapOutputInfo.mapOutputFileName.toString()); if (ch.getPipeline().get(SslHandler.class) == null) { boolean canEvictAfterTransfer = true; if (!shouldAlwaysEvictOsCache) { readaheadPool, spillfile.getAbsolutePath(), shuffleBufferSize, shuffleTransferToAllowed, canEvictAfterTransfer); writeFuture = ch.write(partition); writeFuture.addListener(new ChannelFutureListener() {
@Override public NettyHttpResponse write(String content) { if (response.isChunked()) { ctx.getChannel().write(new DefaultHttpChunk(wrappedBuffer(content.getBytes(CharsetUtil.UTF_8)))); } else { write(copiedBuffer(content, CharsetUtil.UTF_8)); } return this; }
public void handleGameRoomJoin(Player player, Channel channel, ChannelBuffer buffer) { String refKey = NettyUtils.readString(buffer); GameRoom gameRoom = lookupService.gameRoomLookup(refKey); if(null != gameRoom) { PlayerSession playerSession = gameRoom.createPlayerSession(player); gameRoom.onLogin(playerSession); String reconnectKey = (String)idGeneratorService .generateFor(playerSession.getClass()); playerSession.setAttribute(JetConfig.RECONNECT_KEY, reconnectKey); playerSession.setAttribute(JetConfig.RECONNECT_REGISTRY, reconnectRegistry); LOG.trace("Sending GAME_ROOM_JOIN_SUCCESS to channel {}", channel.getId()); ChannelBuffer reconnectKeyBuffer = ChannelBuffers.wrappedBuffer(NettyUtils.createBufferForOpcode(Events.GAME_ROOM_JOIN_SUCCESS), NettyUtils.writeString(reconnectKey)); ChannelFuture future = channel.write(reconnectKeyBuffer); connectToGameRoom(gameRoom, playerSession, future); loginUdp(playerSession, buffer); } else { // Write failure and close channel. ChannelFuture future = channel.write(NettyUtils.createBufferForOpcode(Events.GAME_ROOM_JOIN_FAILURE)); future.addListener(ChannelFutureListener.CLOSE); LOG.error("Invalid ref key provided by client: {}. Channel {} will be closed",refKey,channel.getId()); } }
public ChannelBuffer encodeHeadersFrame(int streamId, boolean last, ChannelBuffer headerBlock) { byte flags = last ? SPDY_FLAG_FIN : 0; int length = 4 + headerBlock.readableBytes(); ChannelBuffer frame = ChannelBuffers.buffer(ByteOrder.BIG_ENDIAN, SPDY_HEADER_SIZE + 4); writeControlFrameHeader(frame, SPDY_HEADERS_FRAME, flags, length); frame.writeInt(streamId); return ChannelBuffers.wrappedBuffer(frame, headerBlock); }
+ Long.toHexString(cnxn.sessionId) + " queuedBuffer 0x" + ChannelBuffers.hexDump(cnxn.queuedBuffer)); LOG.trace(Long.toHexString(cnxn.sessionId) + " buf 0x" + ChannelBuffers.hexDump(buf)); cnxn.queuedBuffer = dynamicBuffer(buf.readableBytes()); cnxn.queuedBuffer.writeBytes(buf); if (LOG.isTraceEnabled()) { LOG.trace(Long.toHexString(cnxn.sessionId) + " queuedBuffer 0x" + ChannelBuffers.hexDump(cnxn.queuedBuffer)); LOG.trace(Long.toHexString(cnxn.sessionId) + " queuedBuffer 0x" + ChannelBuffers.hexDump(cnxn.queuedBuffer)); LOG.trace(Long.toHexString(cnxn.sessionId) + " queuedBuffer 0x" + ChannelBuffers.hexDump(cnxn.queuedBuffer)); cnxn.queuedBuffer = dynamicBuffer(buf.readableBytes()); LOG.trace(Long.toHexString(cnxn.sessionId) + " queuedBuffer 0x" + ChannelBuffers.hexDump(cnxn.queuedBuffer));
LOG.trace(Long.toHexString(sessionId) + " bb 0x" + ChannelBuffers.hexDump( ChannelBuffers.copiedBuffer(dat))); if (bb.remaining() > message.readableBytes()) { int newLimit = bb.position() + message.readableBytes(); bb.limit(newLimit); + Long.toHexString(sessionId) + " bb 0x" + ChannelBuffers.hexDump( ChannelBuffers.copiedBuffer(dat))); LOG.trace(Long.toHexString(sessionId) + " bbLen 0x" + ChannelBuffers.hexDump( ChannelBuffers.copiedBuffer(dat))); LOG.trace(Long.toHexString(sessionId) + " bbLen 0x" + ChannelBuffers.hexDump( ChannelBuffers.copiedBuffer(bbLen)));