diff --git a/userspace/falco/grpc_server_impl.cpp b/userspace/falco/grpc_server_impl.cpp index cf027bd7..07f3e580 100644 --- a/userspace/falco/grpc_server_impl.cpp +++ b/userspace/falco/grpc_server_impl.cpp @@ -17,6 +17,7 @@ limitations under the License. #include "config_falco.h" #include "grpc_server_impl.h" #include "falco_output_queue.h" +#include "logger.h" #include "banned.h" // This raises a compilation error when certain functions are used bool falco::grpc::server_impl::is_running() @@ -28,8 +29,9 @@ bool falco::grpc::server_impl::is_running() return true; } -void falco::grpc::server_impl::subscribe(const stream_context& ctx, const output::request& req, output::response& res) +void falco::grpc::server_impl::get(const stream_context& ctx, const output::request& req, output::response& res) { + falco_logger::log(LOG_INFO, "get\n"); if(ctx.m_status == stream_context::SUCCESS || ctx.m_status == stream_context::ERROR) { // todo(leodido) > log "status=ctx->m_status, stream=ctx->m_stream" @@ -38,21 +40,22 @@ void falco::grpc::server_impl::subscribe(const stream_context& ctx, const output else { // Start or continue streaming - // todo(leodido) > check for m_status == stream_context::STREAMING? + // m_status == stream_context::STREAMING? // todo(leodido) > set m_stream - if(output::queue::get().try_pop(res) && !req.keepalive()) - { - ctx.m_has_more = true; - return; - } - while(is_running() && !output::queue::get().try_pop(res) && req.keepalive()) - { - } + falco_logger::log(LOG_INFO, "get - else\n"); - ctx.m_has_more = !is_running() ? false : req.keepalive(); + ctx.m_has_more = output::queue::get().unsafe_size() > 1; + output::queue::get().try_pop(res); } } +void falco::grpc::server_impl::sub(const bidi_context& ctx, const output::request& req, output::response& res) +{ + // todo + falco_logger::log(LOG_INFO, "SUB!\n"); + +} + void falco::grpc::server_impl::version(const context& ctx, const version::request&, version::response& res) { auto& build = *res.mutable_build(); diff --git a/userspace/falco/grpc_server_impl.h b/userspace/falco/grpc_server_impl.h index c6b93a88..4bf93976 100644 --- a/userspace/falco/grpc_server_impl.h +++ b/userspace/falco/grpc_server_impl.h @@ -36,8 +36,11 @@ public: protected: bool is_running(); - void subscribe(const stream_context& ctx, const output::request& req, output::response& res); + // Outputs + void get(const stream_context& ctx, const output::request& req, output::response& res); + void sub(const bidi_context& ctx, const output::request& req, output::response& res); + // Version void version(const context& ctx, const version::request& req, version::response& res); private: