package org.limewire.swarm.http; import java.io.File; import org.mortbay.http.HttpContext; import org.mortbay.http.HttpServer; import org.mortbay.http.SocketListener; import org.mortbay.http.handler.NotFoundHandler; import org.mortbay.http.handler.ResourceHandler; public class FileServer { private final HttpServer server; public FileServer(int port, File resourceBaseDirectory) { assert resourceBaseDirectory != null; assert resourceBaseDirectory.exists(); assert resourceBaseDirectory.isDirectory(); this.server = new HttpServer(); SocketListener listener = new SocketListener(); listener.setPort(port); listener.setMinThreads(1); listener.setMaxThreads(5); server.addListener(listener); HttpContext context = server.addContext("/"); context.setResourceBase(resourceBaseDirectory.getAbsolutePath()); ResourceHandler resource_handler = new ResourceHandler(); resource_handler.setAcceptRanges(true); resource_handler.setDirAllowed(true); context.addHandler(resource_handler); context.addHandler(new NotFoundHandler()); } public void destroy() { server.destroy(); } public void join() throws InterruptedException { server.join(); } public final void start() throws Exception { server.start(); } public final void stop() throws Exception { server.stop(); } }