// Generated by moonrpc from service.mbt. Edit those files, not this one.
///|
pub fn[R : @moonrpc.Registrar] Greeter::register(self : Greeter, server : R) -> Unit {
server.register_handler(
"/greet.Greeter/SayHello",
@moonrpc.unary((_ctx, req : HelloRequest) => Greeter::say_hello(self, req)),
)
}
///|
pub struct GreeterClient[C] {
channel : C
}
///|
pub fn[C] GreeterClient::new(channel : C) -> GreeterClient[C] {
{ channel, }
}
///|
pub async fn[C : @moonrpc.Caller] GreeterClient::say_hello(
self : GreeterClient[C],
req : HelloRequest,
metadata? : Array[@moonrpc.Header],
timeout_millis? : Int32,
retry? : @moonrpc.Retry,
) -> HelloReply {
self
.channel
.invoke(
"/greet.Greeter/SayHello",
[@moonrpc.Message::encode(req)],
metadata.unwrap_or([]),
timeout_millis,
retry,
)
.reply()
}
///|
pub fn descriptor() -> @moonrpc.FileDescriptor {
@moonrpc.FileDescriptor::new(
"service.proto",
"greet",
messages=[
@moonrpc.MessageDescriptor::new(
"HelloRequest", [@moonrpc.FieldDescriptor::new("name", 1, TypeString)]
),
@moonrpc.MessageDescriptor::new(
"HelloReply", [@moonrpc.FieldDescriptor::new("message", 1, TypeString)]
),
],
services=[
{
name: "Greeter",
methods: [
{
name: "SayHello",
input_type: ".greet.HelloRequest",
output_type: ".greet.HelloReply",
client_streaming: false,
server_streaming: false,
},
],
},
],
)
}
///|
pub impl @moonrpc.Message for HelloRequest with fn encode(self) {
let w = @moonrpc.PbWriter::new()
if self.name != "" {
w.string_(1, self.name)
}
w.to_bytes()
}
///|
pub impl @moonrpc.Message for HelloRequest with fn decode(b) {
let r = @moonrpc.PbReader::new(b)
let v_name :Ref[String] = Ref("")
while !r.eof() {
match r.read_tag() {
(1, LengthDelim) => v_name.val = r.read_string()
(_, wire) => r.skip(wire)
}
}
HelloRequest::{ name: v_name.val }
}
///|
pub impl @moonrpc.Message for HelloReply with fn encode(self) {
let w = @moonrpc.PbWriter::new()
if self.message != "" {
w.string_(1, self.message)
}
w.to_bytes()
}
///|
pub impl @moonrpc.Message for HelloReply with fn decode(b) {
let r = @moonrpc.PbReader::new(b)
let v_message :Ref[String] = Ref("")
while !r.eof() {
match r.read_tag() {
(1, LengthDelim) => v_message.val = r.read_string()
(_, wire) => r.skip(wire)
}
}
HelloReply::{ message: v_message.val }
}