xref: /aosp_15_r20/external/flatbuffers/grpc/examples/python/greeter/client.py (revision 890232f25432b36107d06881e0a25aaa6b473652)
1import sys
2import argparse
3import grpc
4
5sys.path.insert(0, '../../../../../flatbuffers/python')
6
7import flatbuffers
8from models import HelloReply, HelloRequest, greeter_grpc_fb
9
10parser = argparse.ArgumentParser()
11parser.add_argument("port", help="server port to connect to", default=3000)
12parser.add_argument("name", help="name to be sent to server", default="flatbuffers")
13
14def say_hello(stub, hello_request):
15    reply = stub.SayHello(hello_request)
16    r = HelloReply.HelloReply.GetRootAs(reply)
17    print(r.Message())
18
19def say_many_hellos(stub, hello_request):
20    greetings = stub.SayManyHellos(hello_request)
21    for greeting in greetings:
22        r = HelloReply.HelloReply.GetRootAs(greeting)
23        print(r.Message())
24
25def main():
26    args = parser.parse_args()
27
28    with grpc.insecure_channel('localhost:' + args.port) as channel:
29        builder = flatbuffers.Builder()
30        ind = builder.CreateString(args.name)
31        HelloRequest.HelloRequestStart(builder)
32        HelloRequest.HelloRequestAddName(builder, ind)
33        root = HelloRequest.HelloRequestEnd(builder)
34        builder.Finish(root)
35        output = bytes(builder.Output())
36        stub = greeter_grpc_fb.GreeterStub(channel)
37        say_hello(stub, output)
38        say_many_hellos(stub, output)
39
40main()