From 9c75c30f227b35ae6c5afa9ff6f7b8469a7ba0ab Mon Sep 17 00:00:00 2001 From: bergmann Date: Wed, 20 Mar 2019 21:02:36 +0100 Subject: [PATCH] * implemented QOS method for channels --- include/cppamqp/channel.h | 1 + src/cppamqp/channel.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/include/cppamqp/channel.h b/include/cppamqp/channel.h index a10d126..49ad863 100644 --- a/include/cppamqp/channel.h +++ b/include/cppamqp/channel.h @@ -46,6 +46,7 @@ namespace cppamqp void bind_queue (const std::string& queue, const std::string& exchange, const std::string& routing_key); void publish (const std::string& exchange, const std::string& routing_key, const publish_flags& flags, const std::string& message, const publish_options* options = nullptr); std::string consume (const std::string& queue, const std::string& consumer_tag, const consume_flags& flags); + void qos (uint32_t prefetch_size, uint16_t prefetch_count, bool global); void close (int status = AMQP_REPLY_SUCCESS); }; diff --git a/src/cppamqp/channel.cpp b/src/cppamqp/channel.cpp index e6cdd8f..298f42f 100644 --- a/src/cppamqp/channel.cpp +++ b/src/cppamqp/channel.cpp @@ -113,6 +113,22 @@ std::string channel::consume(const std::string& queue, const std::string& consum return __impl::from_bytes(ret->consumer_tag); } +void channel::qos(uint32_t prefetch_size, uint16_t prefetch_count, bool global) +{ + auto ret = amqp_basic_qos( + connection().handle(), + handle(), + prefetch_size, + prefetch_count, + global); + __impl::check_and_raise( + amqp_get_rpc_reply(connection().handle()), + static_cast(std::ostringstream() << "unable to set QOS values").str(), + false); + if (!ret) + throw exception("unable to set QOS values"); +} + void channel::close(int status) { if (!_internal)