From 9c1a87079ea67b884d7f322ed5b4f162d5cf5ac2 Mon Sep 17 00:00:00 2001 From: bergmann Date: Fri, 14 Dec 2018 22:33:50 +0100 Subject: [PATCH] * added parameter to configure heartbeat --- include/cppamqp/connection.h | 4 +++- include/cppamqp/exception.inl | 3 ++- src/cppamqp/connection.cpp | 24 +++++++++++++----------- src/cppamqp/helper.cpp | 2 +- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/include/cppamqp/connection.h b/include/cppamqp/connection.h index d5375db..6e56e5c 100644 --- a/include/cppamqp/connection.h +++ b/include/cppamqp/connection.h @@ -13,7 +13,7 @@ namespace cppamqp struct connection { - private: + public: static inline const std::string& default_vhost (); static inline const std::string& default_username (); static inline const std::string& default_password (); @@ -47,12 +47,14 @@ namespace cppamqp const std::string& p_username = default_username(), const std::string& p_password = default_password(), const std::string& p_vhost = default_vhost(), + int p_heartbeat = AMQP_DEFAULT_HEARTBEAT, int p_max_channels = AMQP_DEFAULT_MAX_CHANNELS, int p_max_frame_size = AMQP_DEFAULT_FRAME_SIZE); void login_external( const std::string& p_identify, const std::string& p_vhost = default_vhost(), + int p_heartbeat = AMQP_DEFAULT_HEARTBEAT, int p_max_channels = AMQP_DEFAULT_MAX_CHANNELS, int p_max_frame_size = AMQP_DEFAULT_FRAME_SIZE); diff --git a/include/cppamqp/exception.inl b/include/cppamqp/exception.inl index 2867774..f440994 100644 --- a/include/cppamqp/exception.inl +++ b/include/cppamqp/exception.inl @@ -15,7 +15,8 @@ namespace cppamqp { } exception::exception(const std::string& p_message, amqp_status_enum p_status) : - utl::exception (p_message), + utl::exception (p_message + " - " + amqp_error_string2(p_status) + + "(" + std::to_string(static_cast(p_status)) + ")"), status (p_status) { } diff --git a/src/cppamqp/connection.cpp b/src/cppamqp/connection.cpp index 74161df..88578f2 100644 --- a/src/cppamqp/connection.cpp +++ b/src/cppamqp/connection.cpp @@ -69,26 +69,28 @@ void connection::tcp_connect(const std::string& hostname, uint port) } void connection::login_plain( - const std::string& username, - const std::string& password, - const std::string& vhost, - int maxChannels, - int maxFrameSize) + const std::string& p_username, + const std::string& p_password, + const std::string& p_vhost, + int p_heartbeat, + int p_max_channels, + int p_max_frame_size) { __impl::check_and_raise( - amqp_login(handle(), vhost.c_str(), maxChannels, maxFrameSize, 0, AMQP_SASL_METHOD_PLAIN, username.c_str(), password.c_str()), + amqp_login(handle(), p_vhost.c_str(), p_max_channels, p_max_frame_size, p_heartbeat, AMQP_SASL_METHOD_PLAIN, p_username.c_str(), p_password.c_str()), "error while login plain", false); } void connection::login_external( - const std::string& identify, - const std::string& vhost, - int maxChannels, - int maxFrameSize) + const std::string& p_identify, + const std::string& p_vhost, + int p_heartbeat, + int p_max_channels, + int p_max_frame_size) { __impl::check_and_raise( - amqp_login(handle(), vhost.c_str(), maxChannels, maxFrameSize, 0, AMQP_SASL_METHOD_EXTERNAL, identify.c_str()), + amqp_login(handle(), p_vhost.c_str(), p_max_channels, p_max_frame_size, p_heartbeat, AMQP_SASL_METHOD_EXTERNAL, p_identify.c_str()), "error while login external", false); } diff --git a/src/cppamqp/helper.cpp b/src/cppamqp/helper.cpp index 5de3d17..8af2999 100644 --- a/src/cppamqp/helper.cpp +++ b/src/cppamqp/helper.cpp @@ -14,7 +14,7 @@ void ::cppamqp::__impl::check_and_raise(int returnCode, std::string msg, bool lo log_global_message(error, msg); } else - throw cppamqp::exception(static_cast(returnCode)); + throw cppamqp::exception(msg, static_cast(returnCode)); } void ::cppamqp::__impl::check_and_raise(const amqp_rpc_reply_t& reply, std::string msg, bool logOnly)