GRPC.Server (grpc v0.6.3-git-c634) View Source
A gRPC server which handles requests by calling user-defined functions.
You should pass a GRPC.Service
in when use the module:
defmodule Greeter.Service do
use GRPC.Service, name: "ping"
rpc :SayHello, Request, Reply
rpc :SayGoodbye, stream(Request), stream(Reply)
end
defmodule Greeter.Server do
use GRPC.Server, service: Greeter.Service
def say_hello(request, _stream) do
Reply.new(message: "Hello")
end
def say_goodbye(request_enum, stream) do
requests = Enum.map request_enum, &(&1)
GRPC.Server.send_reply(stream, reply1)
GRPC.Server.send_reply(stream, reply2)
end
end
Your functions should accept a client request and a GRPC.Server.Stream
.
The request will be a Enumerable.t
(created by Elixir's Stream
) of requests
if it's streaming. If a reply is streaming, you need to call send_reply/2
to send
replies one by one instead of returning reply in the end.
Link to this section Summary
Functions
Send custom metadata(headers).
Send streaming reply.
Set compressor to compress responses. An accepted compressor will be set if clients use one,
even if set_compressor
is not called. But this can be called to override the chosen.
Set custom metadata(headers).
Set custom trailers, which will be sent in the end.
DEPRECATED. Use send_reply/3
instead
Link to this section Types
Specs
rpc() :: (rpc_req(), GRPC.Server.Stream.t() -> rpc_return())
Specs
rpc_req() :: struct() | Enumerable.t()
Specs
Specs
Specs
Link to this section Functions
Specs
send_headers(GRPC.Server.Stream.t(), map()) :: GRPC.Server.Stream.t()
Send custom metadata(headers).
You can send headers only once, before that you can set headers using set_headers/2
.
Send streaming reply.
Examples
iex> GRPC.Server.send_reply(stream, reply)
Specs
set_compressor(GRPC.Server.Stream.t(), module()) :: GRPC.Server.Stream.t()
Set compressor to compress responses. An accepted compressor will be set if clients use one,
even if set_compressor
is not called. But this can be called to override the chosen.
Specs
set_headers(GRPC.Server.Stream.t(), map()) :: GRPC.Server.Stream.t()
Set custom metadata(headers).
You can set headers more than once.
Specs
set_trailers(GRPC.Server.Stream.t(), map()) :: GRPC.Server.Stream.t()
Set custom trailers, which will be sent in the end.
DEPRECATED. Use send_reply/3
instead