summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/qpid/broker/SemanticState.h
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2008-09-22 19:08:47 +0000
committerAlan Conway <aconway@apache.org>2008-09-22 19:08:47 +0000
commitd8052aa68614ae482a0ac618e7001d3c16a84920 (patch)
treeff1602f98750ecc66ad8fadbb6a543a4f599559c /qpid/cpp/src/qpid/broker/SemanticState.h
parent9f81495d5b60c58b5278d0962511ebadf1110e4b (diff)
downloadqpid-python-d8052aa68614ae482a0ac618e7001d3c16a84920.tar.gz
Fixed error handling session-busy condition on broker.
Added accessors to iterate over broker::SemanticState consumers. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@697951 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/qpid/broker/SemanticState.h')
-rw-r--r--qpid/cpp/src/qpid/broker/SemanticState.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/qpid/cpp/src/qpid/broker/SemanticState.h b/qpid/cpp/src/qpid/broker/SemanticState.h
index 94bd929adc..0c56885f8f 100644
--- a/qpid/cpp/src/qpid/broker/SemanticState.h
+++ b/qpid/cpp/src/qpid/broker/SemanticState.h
@@ -45,6 +45,7 @@
#include <vector>
#include <boost/intrusive_ptr.hpp>
+#include <boost/cast.hpp>
namespace qpid {
namespace broker {
@@ -58,6 +59,7 @@ class SessionContext;
class SemanticState : public sys::OutputTask,
private boost::noncopyable
{
+ public:
class ConsumerImpl : public Consumer, public sys::OutputTask,
public boost::enable_shared_from_this<ConsumerImpl>
{
@@ -106,8 +108,11 @@ class SemanticState : public sys::OutputTask,
bool hasOutput();
bool doOutput();
+
+ std::string getName() const { return name; }
};
+ private:
typedef std::map<std::string, ConsumerImpl::shared_ptr> ConsumerImplMap;
typedef std::map<std::string, DtxBuffer::shared_ptr> DtxBufferMap;
@@ -190,6 +195,11 @@ class SemanticState : public sys::OutputTask,
void attached();
void detached();
+
+ template <class F> void eachConsumer(const F& f) {
+ outputTasks.eachOutput(
+ boost::bind(f, boost::bind(&boost::polymorphic_downcast<ConsumerImpl*, OutputTask>, _1)));
+ }
};
}} // namespace qpid::broker