Slide 23
Slide 23 text
Frestyle RPC
Frestyle RPC
Generation of IDL files from code
@message
case class HelloRequest(greeting: String)
@message
case class HelloResponse(reply: String)
@service
trait Greeter[F[_]] {
@rpc(Protobuf)
def sayHello(request: HelloRequest): F[HelloResponse]
@rpc(Avro)
def sayHelloAvro(request: HelloRequest): F[HelloResponse]
@rpc(Protobuf)
@stream[ResponseStreaming.type]
def lotsOfReplies(request: HelloRequest): Observable[HelloResponse]
}
{
"namespace" : "quickstart",
"protocol" : "GreeterService",
"types" : [{
"name" : "HelloRequest",
"type" : "record",
"fields" : [{
"name" : "greeting",
"type" : "string"
}]
},
{
"name" : "HelloResponse",
"type" : "record",
"fields" : [{
"name" : "reply",
"type" : "string"
}]
}],
"messages" : {
"sayHelloAvro" : {
"request" : [{
"name" : "arg",
"type" : "HelloRequest"
}
],
"response" : "HelloResponse"
}
}
} 23