19788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawkepackage fi.iki.elonen;
29788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke
39788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawkeimport java.io.IOException;
49788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke
59788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawkepublic class ServerRunner {
69788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke    public static void run(Class serverClass) {
79788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke        try {
89788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke            executeInstance((NanoHTTPD) serverClass.newInstance());
99788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke        } catch (Exception e) {
109788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke            e.printStackTrace();
119788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke        }
129788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke    }
139788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke
149788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke    public static void executeInstance(NanoHTTPD server) {
159788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke        try {
169788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke            server.start();
179788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke        } catch (IOException ioe) {
189788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke            System.err.println("Couldn't start server:\n" + ioe);
199788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke            System.exit(-1);
209788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke        }
219788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke
229788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke        System.out.println("Server started, Hit Enter to stop.\n");
239788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke
249788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke        try {
259788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke            System.in.read();
269788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke        } catch (Throwable ignored) {
279788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke        }
289788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke
299788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke        server.stop();
309788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke        System.out.println("Server stopped.\n");
319788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke    }
329788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke}
33