From 5abb26e7647adbac9a201c3ce18ab68a9e5c35f2 Mon Sep 17 00:00:00 2001 From: Lorenzo Fontana Date: Thu, 5 Sep 2019 13:43:25 +0200 Subject: [PATCH] new(userspace/falco): handle subscribe events as streams based on keepalive Co-Authored-By: Leonardo Di Donato Signed-off-by: Lorenzo Fontana --- userspace/falco/grpc_server.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/userspace/falco/grpc_server.cpp b/userspace/falco/grpc_server.cpp index 715ae56f..56f2c7d7 100644 --- a/userspace/falco/grpc_server.cpp +++ b/userspace/falco/grpc_server.cpp @@ -117,14 +117,16 @@ void falco_grpc_server_impl::subscribe(const stream_context& ctx, const falco_ou { // Start (or continue) streaming // ctx.m_status == stream_context::STREAMING - // todo > do we want batching? - dequeue: - if(!m_event_queue.try_pop(res)) + if(m_event_queue.try_pop(res) && !req.keepalive()) { - // TODO: backoff mechanism that does has more false - goto dequeue; + ctx.m_has_more = true; + return; } - ctx.m_has_more = true; + while(!m_event_queue.try_pop(res) && req.keepalive()) + { + } + + ctx.m_has_more = req.keepalive(); } }