CoralReactor HTTP Server for Vert.x Comparison. Please refer to the article for additional details.
package com.coralblocks.coralreactor.client.bench.client;
import java.nio.ByteBuffer;
import com.coralblocks.coralbits.util.ByteBufferUtils;
import com.coralblocks.coralreactor.client.Client;
import com.coralblocks.coralreactor.nio.NioReactor;
import com.coralblocks.coralreactor.server.http.HttpServer;
import com.coralblocks.coralreactor.util.Configuration;
import com.coralblocks.coralreactor.util.MapConfiguration;
public class PlaintextHttpServer extends HttpServer {
private static final String MESSAGE = "Hello, world!";
private static final String NOT_FOUND = "<h3>Not Found</h3>";
private final StringBuilder sb = new StringBuilder(1024);
public PlaintextHttpServer(NioReactor nio, int port, Configuration config) {
super(nio, port, config);
}
@Override
protected void handleMessage(Client client, ByteBuffer msg) {
HttpAttachment a = (HttpAttachment) getAttachment(client);
ByteBuffer req = a.getRequest();
if (ByteBufferUtils.contains(req, "/plaintext ")) {
sb.setLength(0);
sb.append("HTTP/1.1 200 OK\n");
sb.append("Content-Type: text/plain\n");
sb.append("Server: CoralReactor\n");
sb.append("Date: ").append(getDateTime()).append("\n");
sb.append("Content-length: ").append(MESSAGE.length()).append("\n");
sb.append("\n");
sb.append(MESSAGE);
client.send(sb);
} else {
sb.setLength(0);
sb.append("HTTP/1.1 404 Not Found\n");
sb.append("Content-Type: text/html\n");
sb.append("Server: CoralReactor\n");
sb.append("Date: ").append(getDateTime()).append("\n");
sb.append("Content-length: ").append(NOT_FOUND.length()).append("\n");
sb.append("\n");
sb.append(NOT_FOUND);
client.send(sb);
client.close();
}
}
public static void main(String[] args) {
NioReactor nio = NioReactor.create();
int port = Integer.parseInt(args[0]);
MapConfiguration config = new MapConfiguration();
PlaintextHttpServer server = new PlaintextHttpServer(nio, port, config);
server.open();
nio.start();
}
}