/* Title: Pure/System/system_channel.scala Author: Makarius Socket-based system channel for inter-process communication. */ package isabelle import java.io.{InputStream, OutputStream} import java.net.{ServerSocket, InetAddress} object System_Channel { def apply(): System_Channel = new System_Channel } class System_Channel private { private val server = new ServerSocket(0, 50, InetAddress.getByName("127.0.0.1")) val server_name: String = "127.0.0.1:" + server.getLocalPort override def toString: String = server_name def rendezvous(): (OutputStream, InputStream) = { val socket = server.accept socket.setTcpNoDelay(true) (socket.getOutputStream, socket.getInputStream) } def accepted() { server.close } }