public HttpResponse sendResponse(HttpResponseStatus responseCode, String responseBody) { String actualResponseBody = responseBody + "\n"; HttpResponse response = new DefaultHttpResponse(HTTP_1_1, responseCode); response.setHeader(CONTENT_LENGTH, actualResponseBody.length()); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { outputStream.write(actualResponseBody.getBytes()); } catch(IOException e) { logger.error("IOException while trying to write the outputStream for an admin response", e); throw new RuntimeException(e); } ChannelBuffer responseContent = ChannelBuffers.dynamicBuffer(); responseContent.writeBytes(outputStream.toByteArray()); response.setContent(responseContent); if (logger.isDebugEnabled()) { logger.debug("Sent " + response); } return response; }
@Override public void sendResponse(StoreStats performanceStats, boolean isFromLocalZone, long startTimeInMs) throws Exception { String base64Key = RestUtils.encodeVoldemortKey(key.get()); String contentLocationKey = "/" + this.storeName + "/" + base64Key; List<VectorClock> vectorClocks = new ArrayList<VectorClock>(); for(Version versionedValue: versionedValues) { VectorClock vectorClock = (VectorClock) versionedValue; vectorClocks.add(vectorClock); numVectorClockEntries += vectorClock.getVersionMap().size(); } String eTags = RestUtils.getSerializedVectorClocks(vectorClocks); byte[] responseContent = eTags.getBytes(); ChannelBuffer responseContentBuffer = ChannelBuffers.dynamicBuffer(responseContent.length); responseContentBuffer.writeBytes(responseContent); // Create the Response object HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK); // Set the right headers response.setHeader(CONTENT_TYPE, "binary"); response.setHeader(CONTENT_TRANSFER_ENCODING, "binary"); response.setHeader(CONTENT_LOCATION, contentLocationKey); // Copy the data into the payload response.setContent(responseContentBuffer); response.setHeader(CONTENT_LENGTH, response.getContent().readableBytes()); // Write the response to the Netty Channel this.messageEvent.getChannel().write(response); }
@Override public void sendResponse(StoreStats performanceStats, boolean isFromLocalZone, long startTimeInMs) { // Create the Response object HttpResponse response = new DefaultHttpResponse(HTTP_1_1, NO_CONTENT); // Set the right headers response.setHeader(CONTENT_LENGTH, "0"); // Write the response to the Netty Channel if(logger.isDebugEnabled()) { String keyStr = RestUtils.getKeyHexString(key); debugLog("DELETE", this.storeName, keyStr, startTimeInMs, System.currentTimeMillis(), 0); } this.messageEvent.getChannel().write(response); if(performanceStats != null && isFromLocalZone) { recordStats(performanceStats, startTimeInMs, Tracked.DELETE); } } }
/** * 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); } }
@Override public NettyHttpResponse chunked() { response.setHeader(Names.TRANSFER_ENCODING, Values.CHUNKED); response.setChunked(true); ctx.getChannel().write(response); return this; }
@Override public void prepareHandshakeResponse(NettyWebSocketConnection webSocketConnection) { webSocketConnection.setHybiWebSocketVersion(getHybiVersion()); if (getHybiVersion() < MIN_HYBI_VERSION) { res.setStatus(HttpResponseStatus.UPGRADE_REQUIRED); res.setHeader(SEC_WEBSOCKET_VERSION, String.valueOf(MIN_HYBI_VERSION)); return; } String key = req.getHeader(SEC_WEBSOCKET_KEY); if (key == null) { res.setStatus(HttpResponseStatus.BAD_REQUEST); return; } String accept = Base64.encode(sha1(key + ACCEPT_GUID)); res.setStatus(new HttpResponseStatus(101, "Switching Protocols")); res.addHeader(UPGRADE, WEBSOCKET.toLowerCase()); res.addHeader(CONNECTION, UPGRADE); res.addHeader(SEC_WEBSOCKET_ACCEPT, accept); String webSocketProtocol = req.getHeader(SEC_WEBSOCKET_PROTOCOL); if (webSocketProtocol != null) { res.addHeader(SEC_WEBSOCKET_PROTOCOL, webSocketProtocol); } }
@Override public NettyHttpResponse chunked() { response.setHeader(Names.TRANSFER_ENCODING, Values.CHUNKED); response.setChunked(true); ctx.getChannel().write(response); return this; }
private void writeResponse(HttpRequest request, HttpResponse response, Channel channel) { boolean keepAlive = isKeepAlive(request); if (keepAlive) { response.setHeader(CONTENT_LENGTH, response.getContent().readableBytes()); response.setHeader(CONNECTION, HttpHeaders.Values.KEEP_ALIVE); } ChannelFuture future = channel.write(response); if (!keepAlive) { future.addListener(ChannelFutureListener.CLOSE); } } }
private void sendError(ChannelHandlerContext ctx, String message, HttpResponseStatus status) { HttpResponse response = new DefaultHttpResponse(HTTP_1_1, status); response.setHeader(Names.CONTENT_TYPE, "text/plain; charset=UTF-8"); // Put shuffle version into http header ChannelBuffer content = ChannelBuffers.copiedBuffer(message, CharsetUtil.UTF_8); response.setContent(content); response.setHeader(Names.CONTENT_LENGTH, content.writerIndex()); // Close the connection as soon as the error message is sent. ctx.getChannel().write(response).addListener(ChannelFutureListener.CLOSE); }
@Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { HttpResponse response = new DefaultHttpResponse(HTTP_1_1, status); response.setHeader(CONTENT_TYPE, "text/plain; charset=UTF-8"); response.setContent(ChannelBuffers.copiedBuffer(text, Charset.forName("UTF-8"))); e.getChannel().write(response).addListener(ChannelFutureListener.CLOSE); } }
private void writeResponse(MessageEvent e) { // Build the response object. HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK); response.setContent(ChannelBuffers.copiedBuffer(buf.toString(), CharsetUtil.UTF_8)); response.setHeader(CONTENT_TYPE, "text/plain; charset=UTF-8"); // Write the response. ChannelFuture future = e.getChannel().write(response); // Close the non-keep-alive connection after the write operation is done. future.addListener(ChannelFutureListener.CLOSE); }
private void sendError(ChannelHandlerContext ctx, String message, HttpResponseStatus status) { HttpResponse response = new DefaultHttpResponse(HTTP_1_1, status); response.setHeader(CONTENT_TYPE, "text/plain; charset=UTF-8"); 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); }
private void sendError(ChannelHandlerContext ctx, String message, HttpResponseStatus status) { HttpResponse response = new DefaultHttpResponse(HTTP_1_1, status); response.setHeader(CONTENT_TYPE, "text/plain; charset=UTF-8"); 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); }
protected void sendError(ChannelHandlerContext ctx, HttpResponseStatus status) { HttpResponse response = new DefaultHttpResponse(HTTP_1_1, status); response.setHeader(CONTENT_TYPE, "text/plain; charset=UTF-8"); response.setContent(ChannelBuffers.copiedBuffer( "Failure: " + status.toString() + "\r\n", CharsetUtil.UTF_8)); // Close the connection as soon as the error message is sent. ctx.getChannel().write(response).addListener(ChannelFutureListener.CLOSE); } }
private void sendError(ChannelHandlerContext ctx, HttpResponseStatus status) { HttpResponse response = new DefaultHttpResponse(HTTP_1_1, status); response.setHeader(CONTENT_TYPE, "text/plain; charset=UTF-8"); response.setContent(ChannelBuffers.copiedBuffer( "Failure: " + status.toString() + "\r\n", CharsetUtil.UTF_8)); // Close the connection as soon as the error message is sent. ctx.getChannel().write(response).addListener(ChannelFutureListener.CLOSE); }
private void sendError(ChannelHandlerContext ctx, HttpResponseStatus status) { HttpResponse response = new DefaultHttpResponse(HTTP_1_1, status); response.setHeader(CONTENT_TYPE, "text/plain; charset=UTF-8"); response.setContent(ChannelBuffers.copiedBuffer( "Failure: " + status.toString() + "\r\n", CharsetUtil.UTF_8)); // Close the connection as soon as the error message is sent. ctx.getChannel().write(response).addListener(ChannelFutureListener.CLOSE); } }