All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.virtuslab.ideprobe.jsonrpc.Channel.scala Maven / Gradle / Ivy

There is a newer version: 0.53.0
Show newest version
package org.virtuslab.ideprobe.jsonrpc

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.net.Socket
import org.virtuslab.ideprobe.Close
import org.virtuslab.ideprobe.jsonrpc.JsonRpc.Message

private[jsonrpc] final class Channel(socket: Socket) extends AutoCloseable {
  private val input = new BufferedReader(new InputStreamReader(socket.getInputStream))
  private val output = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream))

  def send(message: Message): Unit = {
    JsonRpc.append(message, output)
    output.flush()
  }

  val received: Iterator[Message] = JsonRpc.stream(input)

  override def close(): Unit = {
    Close(input, output, socket)
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy