diff options
author | Martin Odersky <odersky@gmail.com> | 2006-06-06 12:10:18 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-06-06 12:10:18 +0000 |
commit | 3be616edcfa5beaa3fd8fc632f25b340c578bbdc (patch) | |
tree | b43fbb2280a0b3876aa679e2e816537734af9e60 /src/compiler/scala/tools/util/SocketServer.scala | |
parent | 31adfc6cf4b34273a4283765dd1f865670bf9c10 (diff) | |
download | scala-3be616edcfa5beaa3fd8fc632f25b340c578bbdc.tar.gz scala-3be616edcfa5beaa3fd8fc632f25b340c578bbdc.tar.bz2 scala-3be616edcfa5beaa3fd8fc632f25b340c578bbdc.zip |
added scala compile server
Diffstat (limited to 'src/compiler/scala/tools/util/SocketServer.scala')
-rwxr-xr-x | src/compiler/scala/tools/util/SocketServer.scala | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/util/SocketServer.scala b/src/compiler/scala/tools/util/SocketServer.scala new file mode 100755 index 0000000000..7a65290dcc --- /dev/null +++ b/src/compiler/scala/tools/util/SocketServer.scala @@ -0,0 +1,54 @@ +package scala.tools.util + +import java.net._ +import java.io._ + +abstract class SocketServer { + + def shutDown: boolean + def session(): unit + + var out: PrintWriter = _ + var in: BufferedReader = _ + + val port: int = try { + val s = new ServerSocket(0) + val p = s.getLocalPort() + s.close() + p + } catch { + case e: IOException => + System.err.println("Could not listen on any port; exiting.") + exit(1) + } + + def run(): unit = { + while (!shutDown) { + val serverSocket = try { + new ServerSocket(port) + } catch { + case e: IOException => + System.err.println("Could not listen on port: "+port+"; exiting.") + exit(1) + } + val clientSocket = try { + serverSocket.accept() + } catch { + case e: IOException => + System.err.println("Accept on port "+port+" failed; exiting.") + exit(1) + } + + out = new PrintWriter(clientSocket.getOutputStream(), true) + in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())) + + session() + + out.close() + in.close() + clientSocket.close() + serverSocket.close() + } + } +} + |