From a72f27c02871125985232aa69c228f6987b3518c Mon Sep 17 00:00:00 2001 From: Leonardo Di Donato Date: Wed, 27 May 2020 20:01:57 +0000 Subject: [PATCH] new(userspace/falco): macro to REGISTER_BIDI gRPC services Co-authored-by: Lorenzo Fontana Signed-off-by: Leonardo Di Donato --- userspace/falco/grpc_server.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/userspace/falco/grpc_server.cpp b/userspace/falco/grpc_server.cpp index b337f1f7..3c9123db 100644 --- a/userspace/falco/grpc_server.cpp +++ b/userspace/falco/grpc_server.cpp @@ -44,6 +44,15 @@ limitations under the License. c.start(this); \ } +#define REGISTER_BIDI(req, res, svc, rpc, impl, num) \ + std::vector> rpc##_contexts(num); \ + for(request_bidi_context & c : rpc##_contexts) \ + { \ + c.m_process_func = &server::impl; \ + c.m_request_func = &svc::AsyncService::Request##rpc; \ + c.start(this); \ + } + static void gpr_log_dispatcher_func(gpr_log_func_args* args) { int priority; @@ -199,7 +208,8 @@ void falco::grpc::server::run() // todo(leodido) > take a look at thread_stress_test.cc into grpc repository REGISTER_UNARY(version::request, version::response, version::service, version, version, context_num) - REGISTER_STREAM(output::request, output::response, output::service, subscribe, subscribe, context_num) + REGISTER_STREAM(output::request, output::response, output::service, get, get, context_num) + REGISTER_BIDI(output::request, output::response, output::service, sub, sub, context_num) m_threads.resize(m_threadiness); int thread_idx = 0; @@ -211,7 +221,7 @@ void falco::grpc::server::run() while(server_impl::is_running()) { - sleep(1); + std::this_thread::sleep_for(std::chrono::milliseconds(100)); } // todo(leodido) > log "stopping gRPC server" stop();