List of usage examples for io.netty.buffer Unpooled copiedBuffer
private static ByteBuf copiedBuffer(CharBuffer buffer, Charset charset)
From source file:com.topsec.bdc.platform.api.server.http.HttpSnoopServerHandler.java
License:Apache License
/** * send back response and close the connection in server side. * /*from w w w.ja v a2 s . c o m*/ * @param ctx * @param responseStatus * @param responseContent */ private void writeResponseAndClose(ChannelHandlerContext ctx, String message) { //response????? ByteBuf responseContentBuf = null; if (Assert.isEmptyString(message) == true) { responseContentBuf = Unpooled.copiedBuffer(_responseStatus.reasonPhrase(), CharsetUtil.UTF_8); } else { responseContentBuf = Unpooled.copiedBuffer(message, CharsetUtil.UTF_8); } // Decide whether to close the connection or not. // Build the response object. FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, _responseStatus, responseContentBuf); //??? response.headers().set(CONTENT_TYPE, "text/plain; charset=UTF-8"); //disallow keepAlive //boolean keepAlive = HttpHeaders.isKeepAlive(_request); //response.headers().set(CONNECTION, HttpHeaders.Values.KEEP_ALIVE); // Add 'Content-Length' header only for a keep-alive connection. response.headers().set(CONTENT_LENGTH, response.content().readableBytes()); // Add keep alive header as per: // - http://www.w3.org/Protocols/HTTP/1.1/draft-ietf-http-v11-spec-01.html#Connection //??? response.headers().set(CONNECTION, HttpHeaders.Values.CLOSE); // Encode the cookie. String cookieString = _request.headers().get(COOKIE); if (cookieString != null) { Set<Cookie> cookies = ServerCookieDecoder.LAX.decode(cookieString); if (!cookies.isEmpty()) { // Reset the cookies if necessary. for (Cookie cookie : cookies) { response.headers().add(SET_COOKIE, ServerCookieEncoder.LAX.encode(cookie)); } } } else { // Browser sent no cookie. Add some. //response.headers().add(SET_COOKIE, ServerCookieEncoder.LAX.encode("key1", "value1")); //response.headers().add(SET_COOKIE, ServerCookieEncoder.LAX.encode("key2", "value2")); } try { // Write the response. ctx.write(response); // close connection ctx.writeAndFlush(Unpooled.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE); } catch (Throwable t) { t.printStackTrace(); ctx.close(); } }
From source file:com.topsec.bdc.platform.api.test.http.file.HttpStaticFileServerHandler.java
License:Apache License
private static void sendListing(ChannelHandlerContext ctx, File dir) { FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, OK); response.headers().set(CONTENT_TYPE, "text/html; charset=UTF-8"); String dirPath = dir.getPath(); StringBuilder buf = new StringBuilder().append("<!DOCTYPE html>\r\n").append("<html><head><title>") .append("Listing of: ").append(dirPath).append("</title></head><body>\r\n") .append("<h3>Listing of: ").append(dirPath).append("</h3>\r\n") .append("<ul>").append("<li><a href=\"../\">..</a></li>\r\n"); for (File f : dir.listFiles()) { if (f.isHidden() || !f.canRead()) { continue; }// w w w . j a va 2 s .c o m String name = f.getName(); if (!ALLOWED_FILE_NAME.matcher(name).matches()) { continue; } buf.append("<li><a href=\"").append(name).append("\">").append(name).append("</a></li>\r\n"); } buf.append("</ul></body></html>\r\n"); ByteBuf buffer = Unpooled.copiedBuffer(buf, CharsetUtil.UTF_8); response.content().writeBytes(buffer); buffer.release(); // Close the connection as soon as the error message is sent. ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE); }
From source file:com.topsec.bdc.platform.api.test.http.file.HttpStaticFileServerHandler.java
License:Apache License
private static void sendError(ChannelHandlerContext ctx, HttpResponseStatus status) { FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, status, Unpooled.copiedBuffer("Failure: " + status + "\r\n", CharsetUtil.UTF_8)); response.headers().set(CONTENT_TYPE, "text/plain; charset=UTF-8"); // Close the connection as soon as the error message is sent. ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE); }
From source file:com.topsec.bdc.platform.api.test.http.snoop.HttpSnoopServerHandler.java
License:Apache License
private boolean writeResponse(HttpObject currentObj, ChannelHandlerContext ctx) { // Decide whether to close the connection or not. boolean keepAlive = HttpHeaders.isKeepAlive(request); // Build the response object. FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, currentObj.getDecoderResult().isSuccess() ? OK : BAD_REQUEST, Unpooled.copiedBuffer(buf.toString(), CharsetUtil.UTF_8)); response.headers().set(CONTENT_TYPE, "text/plain; charset=UTF-8"); if (keepAlive) { // Add 'Content-Length' header only for a keep-alive connection. response.headers().set(CONTENT_LENGTH, response.content().readableBytes()); // Add keep alive header as per: // - http://www.w3.org/Protocols/HTTP/1.1/draft-ietf-http-v11-spec-01.html#Connection response.headers().set(CONNECTION, HttpHeaders.Values.KEEP_ALIVE); }// www . java 2 s .c om // Encode the cookie. String cookieString = request.headers().get(COOKIE); if (cookieString != null) { Set<Cookie> cookies = CookieDecoder.decode(cookieString); if (!cookies.isEmpty()) { // Reset the cookies if necessary. for (Cookie cookie : cookies) { response.headers().add(SET_COOKIE, ServerCookieEncoder.encode(cookie)); } } } else { // Browser sent no cookie. Add some. response.headers().add(SET_COOKIE, ServerCookieEncoder.encode("key1", "value1")); response.headers().add(SET_COOKIE, ServerCookieEncoder.encode("key2", "value2")); } // Write the response. ctx.write(response); return keepAlive; }
From source file:com.topsec.bdc.platform.api.test.http.websocketx.benchmarkserver.WebSocketServerBenchmarkPage.java
License:Apache License
public static ByteBuf getContent(String webSocketLocation) { return Unpooled.copiedBuffer( "<html><head><title>Web Socket Performance Test</title></head>" + NEWLINE + "<body>" + NEWLINE + "<h2>WebSocket Performance Test</h2>" + NEWLINE + "<label>Connection Status:</label>" + NEWLINE + "<label id=\"connectionLabel\"></label><br />" + NEWLINE + "<form onsubmit=\"return false;\">" + NEWLINE + "Message size:" + "<input type=\"text\" id=\"messageSize\" value=\"1024\"/><br>" + NEWLINE + "Number of messages:" + "<input type=\"text\" id=\"nrMessages\" value=\"100000\"/><br>" + NEWLINE + "Data Type:" + "<input type=\"radio\" name=\"type\" id=\"typeText\" value=\"text\" checked>text" + "<input type=\"radio\" name=\"type\" id=\"typeBinary\" value=\"binary\">binary<br>" + NEWLINE + "Mode:<br>" + NEWLINE + "<input type=\"radio\" name=\"mode\" id=\"modeSingle\" value=\"single\" checked>" + "Wait for response after each messages<br>" + NEWLINE + "<input type=\"radio\" name=\"mode\" id=\"modeAll\" value=\"all\">" + "Send all messages and then wait for all responses<br>" + NEWLINE + "<input type=\"checkbox\" id=\"verifiyResponses\">Verify responded messages<br>" + NEWLINE + "<input type=\"button\" value=\"Start Benchmark\"" + NEWLINE + " onclick=\"startBenchmark()\" />" + NEWLINE + "<h3>Output</h3>" + NEWLINE + "<textarea id=\"output\" style=\"width:500px;height:300px;\"></textarea>" + NEWLINE + "<br>" + NEWLINE + "<input type=\"button\" value=\"Clear\" onclick=\"clearText()\">" + NEWLINE + "</form>" + NEWLINE + "<script type=\"text/javascript\">" + NEWLINE + "var benchRunning = false;" + NEWLINE + "var messageSize = 0;" + NEWLINE + "var totalMessages = 0;" + NEWLINE + "var rcvdMessages = 0;" + NEWLINE + "var isBinary = true;" + NEWLINE + "var isSingle = true;" + NEWLINE + "var verifiyResponses = false;" + NEWLINE + "var benchData = null;" + NEWLINE + "var startTime;" + NEWLINE + "var endTime;" + NEWLINE + "var socket;" + NEWLINE + "var output = document.getElementById('output');" + NEWLINE + "var connectionLabel = document.getElementById('connectionLabel');" + NEWLINE + "if (!window.WebSocket) {" + NEWLINE + " window.WebSocket = window.MozWebSocket;" + NEWLINE + '}' + NEWLINE + "if (window.WebSocket) {" + NEWLINE + " socket = new WebSocket(\"" + webSocketLocation + "\");" + NEWLINE + " socket.binaryType = 'arraybuffer';" + NEWLINE + " socket.onmessage = function(event) {" + NEWLINE + " if (verifiyResponses) {" + NEWLINE + " if (isBinary) {" + NEWLINE + " if (!(event.data instanceof ArrayBuffer) || " + NEWLINE + " event.data.byteLength != benchData.byteLength) {" + NEWLINE + " onInvalidResponse(benchData, event.data);" + NEWLINE + " return;" + NEWLINE + " } else {" + NEWLINE + " var v = new Uint8Array(event.data);" + NEWLINE + " for (var j = 0; j < benchData.byteLength; j++) {" + NEWLINE + " if (v[j] != benchData[j]) {" + NEWLINE + " onInvalidResponse(benchData, event.data);" + NEWLINE + " return;" + NEWLINE + " }" + NEWLINE + " }" + NEWLINE + " }" + NEWLINE + " } else {" + NEWLINE + " if (event.data != benchData) {" + NEWLINE + " onInvalidResponse(benchData, event.data);" + NEWLINE + " return;" + NEWLINE + " }" + NEWLINE + " }" + NEWLINE + " }" + NEWLINE + " rcvdMessages++;" + NEWLINE + " if (rcvdMessages == totalMessages) {" + NEWLINE + " onFinished();" + NEWLINE + " } else if (isSingle) {" + NEWLINE + " socket.send(benchData);" + NEWLINE + " }" + NEWLINE + " };" + NEWLINE + " socket.onopen = function(event) {" + NEWLINE + " connectionLabel.innerHTML = \"Connected\";" + NEWLINE + " };" + NEWLINE + " socket.onclose = function(event) {" + NEWLINE + " benchRunning = false;" + NEWLINE + " connectionLabel.innerHTML = \"Disconnected\";" + NEWLINE + " };" + NEWLINE + "} else {" + NEWLINE + " alert(\"Your browser does not support Web Socket.\");" + NEWLINE + '}' + NEWLINE + NEWLINE + "function onInvalidResponse(sent,recvd) {" + NEWLINE + " socket.close();" + NEWLINE + " alert(\"Error: Sent data did not match the received data!\");" + NEWLINE + "}" + NEWLINE + NEWLINE + "function clearText() {" + NEWLINE + " output.value=\"\";" + NEWLINE + "}" + NEWLINE + NEWLINE + "function createBenchData() {" + NEWLINE + " if (isBinary) {" + NEWLINE + " benchData = new Uint8Array(messageSize);" + NEWLINE + " for (var i=0; i < messageSize; i++) {" + NEWLINE + " benchData[i] += Math.floor(Math.random() * 255);" + NEWLINE + " }" + NEWLINE + " } else { " + NEWLINE + " benchData = \"\";" + NEWLINE + " for (var i=0; i < messageSize; i++) {" + NEWLINE + " benchData += String.fromCharCode(Math.floor(Math.random() * (123 - 65) + 65));" + NEWLINE + " }" + NEWLINE + " }" + NEWLINE + "}" + NEWLINE + NEWLINE + "function startBenchmark(message) {" + NEWLINE + " if (!window.WebSocket || benchRunning) { return; }" + NEWLINE + " if (socket.readyState == WebSocket.OPEN) {" + NEWLINE + " isBinary = document.getElementById('typeBinary').checked;" + NEWLINE + " isSingle = document.getElementById('modeSingle').checked;" + NEWLINE + " verifiyResponses = document.getElementById('verifiyResponses').checked;" + NEWLINE + " messageSize = parseInt(document.getElementById('messageSize').value);" + NEWLINE + " totalMessages = parseInt(document.getElementById('nrMessages').value);" + NEWLINE + " if (isNaN(messageSize) || isNaN(totalMessages)) return;" + NEWLINE + " createBenchData();" + NEWLINE + " output.value = output.value + '\\nStarting Benchmark';" + NEWLINE + " rcvdMessages = 0;" + NEWLINE + " benchRunning = true;" + NEWLINE + " startTime = new Date();" + NEWLINE + " if (isSingle) {" + NEWLINE + " socket.send(benchData);" + NEWLINE + " } else {" + NEWLINE + " for (var i = 0; i < totalMessages; i++) socket.send(benchData);" + NEWLINE + " }" + NEWLINE + " } else {" + NEWLINE + " alert(\"The socket is not open.\");" + NEWLINE + " }" + NEWLINE + '}' + NEWLINE + NEWLINE + "function onFinished() {" + NEWLINE + " endTime = new Date();" + NEWLINE + " var duration = (endTime - startTime) / 1000.0;" + NEWLINE + " output.value = output.value + '\\nTest took: ' + duration + 's';" + NEWLINE + " var messagesPerS = totalMessages / duration;" + NEWLINE + " output.value = output.value + '\\nPerformance: ' + messagesPerS + ' Messages/s';" + NEWLINE + " output.value = output.value + ' in each direction';" + NEWLINE + " output.value = output.value + '\\nRound trip: ' + 1000.0/messagesPerS + 'ms';" + NEWLINE + " var throughput = messageSize * totalMessages / duration;" + NEWLINE + " var throughputText;" + NEWLINE + " if (isBinary) throughputText = throughput / (1024*1024) + ' MB/s';" + NEWLINE + " else throughputText = throughput / (1000*1000) + ' MChars/s';" + NEWLINE + " output.value = output.value + '\\nThroughput: ' + throughputText;" + NEWLINE + " output.value = output.value + ' in each direction';" + NEWLINE + " benchRunning = false;" + NEWLINE + "}" + NEWLINE + "</script>" + NEWLINE + "</body>" + NEWLINE + "</html>" + NEWLINE, CharsetUtil.US_ASCII);/* w ww . ja v a2 s . c om*/ }
From source file:com.topsec.bdc.platform.api.test.http.websocketx.benchmarkserver.WebSocketServerHandler.java
License:Apache License
private static void sendHttpResponse(ChannelHandlerContext ctx, FullHttpRequest req, FullHttpResponse res) { // Generate an error page if response getStatus code is not OK (200). if (res.getStatus().code() != 200) { ByteBuf buf = Unpooled.copiedBuffer(res.getStatus().toString(), CharsetUtil.UTF_8); res.content().writeBytes(buf);//from w w w . ja v a 2 s. c o m buf.release(); HttpHeaders.setContentLength(res, res.content().readableBytes()); } // Send the response and close the connection if necessary. ChannelFuture f = ctx.channel().writeAndFlush(res); if (!HttpHeaders.isKeepAlive(req) || res.getStatus().code() != 200) { f.addListener(ChannelFutureListener.CLOSE); } }
From source file:com.topsec.bdc.platform.api.test.http.websocketx.server.WebSocketServerIndexPage.java
License:Apache License
public static ByteBuf getContent(String webSocketLocation) { return Unpooled.copiedBuffer("<html><head><title>Web Socket Test</title></head>" + NEWLINE + "<body>" + NEWLINE + "<script type=\"text/javascript\">" + NEWLINE + "var socket;" + NEWLINE + "if (!window.WebSocket) {" + NEWLINE + " window.WebSocket = window.MozWebSocket;" + NEWLINE + '}' + NEWLINE + "if (window.WebSocket) {" + NEWLINE + " socket = new WebSocket(\"" + webSocketLocation + "\");" + NEWLINE + " socket.onmessage = function(event) {" + NEWLINE + " var ta = document.getElementById('responseText');" + NEWLINE + " ta.value = ta.value + '\\n' + event.data" + NEWLINE + " };" + NEWLINE + " socket.onopen = function(event) {" + NEWLINE + " var ta = document.getElementById('responseText');" + NEWLINE + " ta.value = \"Web Socket opened!\";" + NEWLINE + " };" + NEWLINE + " socket.onclose = function(event) {" + NEWLINE + " var ta = document.getElementById('responseText');" + NEWLINE + " ta.value = ta.value + \"Web Socket closed\"; " + NEWLINE + " };" + NEWLINE + "} else {" + NEWLINE + " alert(\"Your browser does not support Web Socket.\");" + NEWLINE + '}' + NEWLINE + NEWLINE + "function send(message) {" + NEWLINE + " if (!window.WebSocket) { return; }" + NEWLINE + " if (socket.readyState == WebSocket.OPEN) {" + NEWLINE + " socket.send(message);" + NEWLINE + " } else {" + NEWLINE + " alert(\"The socket is not open.\");" + NEWLINE + " }" + NEWLINE + '}' + NEWLINE + "</script>" + NEWLINE + "<form onsubmit=\"return false;\">" + NEWLINE + "<input type=\"text\" name=\"message\" value=\"Hello, World!\"/>" + "<input type=\"button\" value=\"Send Web Socket Data\"" + NEWLINE + " onclick=\"send(this.form.message.value)\" />" + NEWLINE + "<h3>Output</h3>" + NEWLINE + "<textarea id=\"responseText\" style=\"width:500px;height:300px;\"></textarea>" + NEWLINE + "</form>" + NEWLINE + "</body>" + NEWLINE + "</html>" + NEWLINE, CharsetUtil.US_ASCII); }
From source file:com.util.Utility.java
License:Apache License
/** * It sends a good bye message to client and then close a ftp command channel * @param ch ftp command channel/*from w w w . ja va 2 s. c om*/ * @param logger message logger * @param remoteIp client IP address * @param goodByeMessage Goodbye message */ public static void disconnectFromClient(Channel ch, Logger logger, String remoteIp, String goodByeMessage) { ch.writeAndFlush(Unpooled.copiedBuffer(goodByeMessage + "\r\n", CharsetUtil.UTF_8)) .addListener(new SessionClosureListener(null, ch, logger, remoteIp, goodByeMessage)); }
From source file:com.util.Utility.java
License:Apache License
/** * It sends a response message to client * @param ch ftp channel/* w w w . j av a 2 s. co m*/ * @param logger message logger * @param remoteIp client IP address * @param ftpMessage response message */ public static void sendMessageToClient(Channel ch, Logger logger, String remoteIp, String ftpMessage) { ch.writeAndFlush(Unpooled.copiedBuffer(ftpMessage + "\r\n", CharsetUtil.UTF_8)) .addListener(new CommandCompleteListener(logger, remoteIp, ftpMessage)); }
From source file:com.util.Utility.java
License:Apache License
/** * It handle an transfer exception; it sends an error message and then close data transfer channel if necessary * @param ctx response channel/* ww w .j a v a2 s.co m*/ * @param fs ftp session * @param message The error message that to be send to client */ public static void handleTransferException(ChannelHandlerContext ctx, FtpSessionHandler fs, String message) { ctx.channel().writeAndFlush(Unpooled.copiedBuffer(message + "\r\n", CharsetUtil.UTF_8)) .addListener(new TransferExceptionListener(fs, message)); }