From 35e26207bc5db7947c0d1a1abb05c4aba5c0e463 Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Wed, 30 Jun 2010 22:22:50 +0000 Subject: QPID-664: expose authenticated username for connection git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@959461 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/include/qpid/messaging/Connection.h | 1 + cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp | 4 ++++ cpp/src/qpid/client/amqp0_10/ConnectionImpl.h | 1 + cpp/src/qpid/messaging/Connection.cpp | 5 ++++- cpp/src/qpid/messaging/ConnectionImpl.h | 1 + cpp/src/tests/MessagingSessionTests.cpp | 6 ++++++ 6 files changed, 17 insertions(+), 1 deletion(-) (limited to 'cpp') diff --git a/cpp/include/qpid/messaging/Connection.h b/cpp/include/qpid/messaging/Connection.h index 5af4628fa8..6f2cd54b4b 100644 --- a/cpp/include/qpid/messaging/Connection.h +++ b/cpp/include/qpid/messaging/Connection.h @@ -98,6 +98,7 @@ class Connection : public qpid::messaging::Handle QPID_MESSAGING_EXTERN Session createSession(const std::string& name = std::string()); QPID_MESSAGING_EXTERN Session getSession(const std::string& name) const; + QPID_MESSAGING_EXTERN std::string getAuthenticatedUsername(); private: friend class qpid::messaging::PrivateImplRef; diff --git a/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp b/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp index f93df90d7e..2fe55cc035 100644 --- a/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp +++ b/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp @@ -325,5 +325,9 @@ bool ConnectionImpl::backoff() return false; } } +std::string ConnectionImpl::getAuthenticatedUsername() +{ + return connection.getNegotiatedSettings().username; +} }}} // namespace qpid::client::amqp0_10 diff --git a/cpp/src/qpid/client/amqp0_10/ConnectionImpl.h b/cpp/src/qpid/client/amqp0_10/ConnectionImpl.h index 904cef750c..8467376725 100644 --- a/cpp/src/qpid/client/amqp0_10/ConnectionImpl.h +++ b/cpp/src/qpid/client/amqp0_10/ConnectionImpl.h @@ -51,6 +51,7 @@ class ConnectionImpl : public qpid::messaging::ConnectionImpl void detach(); void setOption(const std::string& name, const qpid::types::Variant& value); bool backoff(); + std::string getAuthenticatedUsername(); private: typedef std::map Sessions; diff --git a/cpp/src/qpid/messaging/Connection.cpp b/cpp/src/qpid/messaging/Connection.cpp index 2bd5ba96f9..e132b6e899 100644 --- a/cpp/src/qpid/messaging/Connection.cpp +++ b/cpp/src/qpid/messaging/Connection.cpp @@ -74,5 +74,8 @@ void Connection::setOption(const std::string& name, const Variant& value) { impl->setOption(name, value); } - +std::string Connection::getAuthenticatedUsername() +{ + return impl->getAuthenticatedUsername(); +} }} // namespace qpid::messaging diff --git a/cpp/src/qpid/messaging/ConnectionImpl.h b/cpp/src/qpid/messaging/ConnectionImpl.h index 23ab5272d0..fb45ee5e8b 100644 --- a/cpp/src/qpid/messaging/ConnectionImpl.h +++ b/cpp/src/qpid/messaging/ConnectionImpl.h @@ -44,6 +44,7 @@ class ConnectionImpl : public virtual qpid::RefCounted virtual Session newSession(bool transactional, const std::string& name) = 0; virtual Session getSession(const std::string& name) const = 0; virtual void setOption(const std::string& name, const qpid::types::Variant& value) = 0; + virtual std::string getAuthenticatedUsername() = 0; private: }; }} // namespace qpid::messaging diff --git a/cpp/src/tests/MessagingSessionTests.cpp b/cpp/src/tests/MessagingSessionTests.cpp index c22cb4bf73..ce1d885e46 100644 --- a/cpp/src/tests/MessagingSessionTests.cpp +++ b/cpp/src/tests/MessagingSessionTests.cpp @@ -769,6 +769,12 @@ QPID_AUTO_TEST_CASE(testExclusiveSubscriber) } catch (const MessagingException& e) {} } +QPID_AUTO_TEST_CASE(testAuthenticatedUsername) +{ + MessagingFixture fix; + BOOST_CHECK_EQUAL(fix.connection.getAuthenticatedUsername(), std::string("anonymous")); +} + QPID_AUTO_TEST_SUITE_END() -- cgit v1.2.1