File: server.py

package info (click to toggle)
flatbuffers 2.0.8%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 14,308 kB
  • sloc: cpp: 44,808; python: 6,544; cs: 4,852; java: 4,389; ansic: 1,615; php: 1,455; xml: 973; javascript: 938; sh: 806; makefile: 35
file content (57 lines) | stat: -rw-r--r-- 1,670 bytes parent folder | download | duplicates (15)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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()