|  | import argparse | 
|  | from concurrent import futures | 
|  | import sys | 
|  | import grpc | 
|  |  | 
|  | sys.path.insert(0, "../../../../../flatbuffers/python") | 
|  |  | 
|  | import flatbuffers | 
|  | from models import HelloReply, HelloRequest, greeter_grpc_fb | 
|  |  | 
|  | parser = argparse.ArgumentParser() | 
|  | parser.add_argument("port", help="server on port", default=3000) | 
|  |  | 
|  |  | 
|  | def build_reply(message): | 
|  | builder = flatbuffers.Builder() | 
|  | ind = builder.CreateString(message) | 
|  | HelloReply.HelloReplyStart(builder) | 
|  | HelloReply.HelloReplyAddMessage(builder, ind) | 
|  | root = HelloReply.HelloReplyEnd(builder) | 
|  | builder.Finish(root) | 
|  | return bytes(builder.Output()) | 
|  |  | 
|  |  | 
|  | class GreeterServicer(greeter_grpc_fb.GreeterServicer): | 
|  |  | 
|  | def __init__(self): | 
|  | self.greetings = ["Hi", "Hallo", "Ciao"] | 
|  |  | 
|  | def SayHello(self, request, context): | 
|  | r = HelloRequest.HelloRequest().GetRootAs(request, 0) | 
|  | reply = "Unknown" | 
|  | if r.Name(): | 
|  | reply = r.Name() | 
|  | return build_reply("welcome " + reply.decode("UTF-8")) | 
|  |  | 
|  | def SayManyHellos(self, request, context): | 
|  | r = HelloRequest.HelloRequest().GetRootAs(request, 0) | 
|  | reply = "Unknown" | 
|  | if r.Name(): | 
|  | reply = r.Name() | 
|  |  | 
|  | for greeting in self.greetings: | 
|  | print(type(reply)) | 
|  | yield build_reply(greeting + " " + reply.decode("UTF-8")) | 
|  |  | 
|  |  | 
|  | def serve(): | 
|  | args = parser.parse_args() | 
|  | server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) | 
|  | greeter_grpc_fb.add_GreeterServicer_to_server(GreeterServicer(), server) | 
|  | server.add_insecure_port("[::]:" + args.port) | 
|  | server.start() | 
|  | server.wait_for_termination() | 
|  |  | 
|  |  | 
|  | if __name__ == "__main__": | 
|  | serve() |