package biz.paluch.logging.gelf.netty; import java.util.List; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpResponseStatus; /** * @author Aleksandar Stojadinovic */ public class NettyLocalHTTPServer { private int port = 19393; private EventLoopGroup group = new NioEventLoopGroup(); private GelfInboundHTTPInitializer handlerInitializer = new GelfInboundHTTPInitializer(); private Class<? extends Channel> channelClass = NioServerSocketChannel.class; private ChannelFuture f; public NettyLocalHTTPServer() { } public void run() throws Exception { ServerBootstrap b = new ServerBootstrap(); b.group(group); b.channel((Class) channelClass).childHandler(handlerInitializer); f = b.bind(port).sync(); } public void close() { if (f != null) { f.channel().close(); f = null; } } public List<Object> getJsonValues() { return handlerInitializer.getHandler().getValues(); } public void setReturnStatus(HttpResponseStatus status) { handlerInitializer.getHandler().setReturnStatus(status); } public GelfInboundHTTPInitializer getHandlerInitializer() { return handlerInitializer; } public HttpMethod getLastHttpRequest() { return handlerInitializer.getHandler().getHttpRequest().getMethod(); } public HttpHeaders getLastHttpHeaders() { return handlerInitializer.getHandler().getHttpRequest().headers(); } }