new(userspace/falco): implement the output queue methods directly

Co-Authored-By: Leonardo Di Donato <leodidonato@gmail.com>
Signed-off-by: Lorenzo Fontana <lo@linux.com>
This commit is contained in:
Lorenzo Fontana 2019-09-06 18:16:35 +02:00 committed by Leo Di Donato
parent 43cd429967
commit 0a9f61f0fb
2 changed files with 11 additions and 7 deletions

View File

@ -32,9 +32,14 @@ public:
return instance; return instance;
} }
falco_output_response_cq queue() bool try_pop(falco_output_response& res)
{ {
return m_queue; return m_queue.try_pop(res);
}
void push(falco_output_response& res)
{
m_queue.push(res);
} }
private: private:

View File

@ -37,15 +37,14 @@ void falco_grpc_server_impl::subscribe(const stream_context& ctx, const falco_ou
} }
else else
{ {
auto m_event_queue = falco_output_queue::get().queue();
// Start (or continue) streaming // Start (or continue) streaming
// ctx.m_status == stream_context::STREAMING // ctx.m_status == stream_context::STREAMING
if(m_event_queue.try_pop(res) && !req.keepalive()) if(falco_output_queue::get().try_pop(res) && !req.keepalive())
{ {
ctx.m_has_more = true; ctx.m_has_more = true;
return; return;
} }
while(!m_event_queue.try_pop(res) && req.keepalive()) while(!falco_output_queue::get().try_pop(res) && req.keepalive())
{ {
} }