packages feed

grpc-haskell-0.0.1.0: tests/test-server.py

from simple_pb2 import *
import simple_pb2_grpc
from uuid import uuid4
from concurrent import futures
import random
import Queue
import grpc

print "Starting python server"

done_queue = Queue.Queue()

class SimpleServiceServer(simple_pb2_grpc.SimpleServiceServicer):
    def done(self, request, context):
        global server
        done_queue.put_nowait(())

        return SimpleServiceDone()

    def normalCall(self, request, context):
        return SimpleServiceResponse(response = "NormalRequest", num = sum(request.num))

    def clientStreamingCall(self, requests, context):
        cur_name = ""
        cur_sum = 0
        for request in requests:
            cur_name += request.request
            cur_sum += sum(request.num)
        return SimpleServiceResponse(response = cur_name, num = cur_sum)

    def serverStreamingCall(self, request, context):
        for num in request.num:
            yield SimpleServiceResponse(response = request.request, num = num)

    def biDiStreamingCall(self, requests, context):
        for request in requests:
            yield SimpleServiceResponse(response = request.request, num = sum(request.num))

server = grpc.server(futures.ThreadPoolExecutor(max_workers=1))
simple_pb2_grpc.add_SimpleServiceServicer_to_server(SimpleServiceServer(), server)
server.add_insecure_port('[::]:50051')
server.start()

done_queue.get()