-- Greeter client example. Loads the server-side from server.lua, builds -- a loopback transport, and exercises every streaming flavor. -- -- Run with: -- LUA_PATH="./runtime/?/init.lua;./runtime/?.lua;./examples/expected/?.lua;./examples/expected/?/init.lua;;" \ -- tarantool examples/grpc/client.lua local fiber = require('fiber') local hello = require('full.hello.hello_pb') -- Builds a transport — see examples/grpc/server.lua. local transport = dofile('examples/grpc/server.lua') local client = hello.Greeter_client(transport) -- 1. Unary print('--- unary ---') local reply = client.SayHello({name = 'Alice'}, {}) print(reply.greeting) -- 2. Server-stream print('--- server-stream ---') local s = client.StreamHellos({name = 'Bob'}, {}) while true do local msg, err = s:recv() if msg == nil then if err ~= nil then error(err, 0) end break end print(msg.greeting) end -- 3. Client-stream print('--- client-stream ---') local c = client.CollectHellos({}) c:send({name = 'Alice'}) c:send({name = 'Bob'}) c:send({name = 'Carol'}) c:close_send() local final = c:recv() print(final.greeting) -- 4. Bidi print('--- bidi ---') local b = client.Chat({}) -- Producer fiber pushes a few messages then closes its side. fiber.create(function() for _, name in ipairs({'X', 'Y', 'Z'}) do b:send({name = name}) end b:close_send() end) while true do local msg, err = b:recv() if msg == nil then if err ~= nil then error(err, 0) end break end print(msg.greeting) end os.exit(0)