1/* Title: Pure/System/system_channel.scala 2 Author: Makarius 3 4Socket-based system channel for inter-process communication. 5*/ 6 7package isabelle 8 9 10import java.io.{InputStream, OutputStream} 11import java.net.{ServerSocket, InetAddress} 12 13 14object System_Channel 15{ 16 def apply(): System_Channel = new System_Channel 17} 18 19class System_Channel private 20{ 21 private val server = new ServerSocket(0, 50, InetAddress.getByName("127.0.0.1")) 22 23 val server_name: String = "127.0.0.1:" + server.getLocalPort 24 override def toString: String = server_name 25 26 def rendezvous(): (OutputStream, InputStream) = 27 { 28 val socket = server.accept 29 socket.setTcpNoDelay(true) 30 (socket.getOutputStream, socket.getInputStream) 31 } 32 33 def accepted() { server.close } 34} 35