57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from concurrent import futures
 | |
| import sys		
 | |
| import argparse
 | |
| 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() |