scala.meta.jsonrpc.Endpoint.scala Maven / Gradle / Ivy
The newest version!
package scala.meta.jsonrpc
import io.circe.Decoder
import io.circe.Encoder
import monix.eval.Task
import monix.execution.Ack
import scala.concurrent.Future
class Endpoint[A: Decoder: Encoder, B: Decoder: Encoder](val method: String) {
def encoderA: Encoder[A] = implicitly
def decoderA: Decoder[A] = implicitly
def encoderB: Encoder[B] = implicitly
def decoderB: Decoder[B] = implicitly
def request(request: A)(
implicit client: JsonRpcClient
): Task[Either[Response.Error, B]] =
client.request[A, B](method, request)
def notify(
notification: A
)(implicit client: JsonRpcClient): Future[Ack] =
client.notify[A](method, notification)
}
object Endpoint {
def request[A: Decoder: Encoder, B: Decoder: Encoder](
method: String
): Endpoint[A, B] =
new Endpoint(method)
def notification[A: Decoder: Encoder](method: String): Endpoint[A, Unit] =
new Endpoint(method)
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy