equal
deleted
inserted
replaced
|
1 /* Title: Pure/General/http_server.scala |
|
2 Author: Makarius |
|
3 |
|
4 Minimal HTTP server. |
|
5 */ |
|
6 |
|
7 package isabelle |
|
8 |
|
9 |
|
10 import java.net.{InetAddress, InetSocketAddress} |
|
11 import com.sun.net.httpserver.{HttpExchange, HttpHandler, HttpServer} |
|
12 |
|
13 |
|
14 object HTTP_Server |
|
15 { |
|
16 def apply(handler: HttpExchange => Unit): HTTP_Server = |
|
17 { |
|
18 val localhost = InetAddress.getByName("127.0.0.1") |
|
19 |
|
20 val server = HttpServer.create(new InetSocketAddress(localhost, 0), 0) |
|
21 server.createContext("/", new HttpHandler { def handle(x: HttpExchange) { handler(x) } }) |
|
22 server.setExecutor(null) |
|
23 new HTTP_Server(server) |
|
24 } |
|
25 } |
|
26 |
|
27 class HTTP_Server private(val server: HttpServer) |
|
28 { |
|
29 def start: Unit = server.start |
|
30 def stop: Unit = server.stop(0) |
|
31 |
|
32 def address: InetSocketAddress = server.getAddress |
|
33 def url: String = "http://" + address.getHostName + ":" + address.getPort |
|
34 override def toString: String = url |
|
35 } |