summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/qpid/broker/QueueEvents.h
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/src/qpid/broker/QueueEvents.h')
-rw-r--r--qpid/cpp/src/qpid/broker/QueueEvents.h21
1 files changed, 13 insertions, 8 deletions
diff --git a/qpid/cpp/src/qpid/broker/QueueEvents.h b/qpid/cpp/src/qpid/broker/QueueEvents.h
index 2ba69e33e6..82abd3d20a 100644
--- a/qpid/cpp/src/qpid/broker/QueueEvents.h
+++ b/qpid/cpp/src/qpid/broker/QueueEvents.h
@@ -22,6 +22,7 @@
*
*/
+#include "BrokerImportExport.h"
#include "QueuedMessage.h"
#include "qpid/sys/Mutex.h"
#include "qpid/sys/PollableQueue.h"
@@ -48,25 +49,29 @@ class QueueEvents
EventType type;
QueuedMessage msg;
- Event(EventType, const QueuedMessage&);
+ QPID_BROKER_EXTERN Event(EventType, const QueuedMessage&);
};
typedef boost::function<void (Event)> EventListener;
- QueueEvents(const boost::shared_ptr<sys::Poller>& poller);
- ~QueueEvents();
- void enqueued(const QueuedMessage&);
- void dequeued(const QueuedMessage&);
- void registerListener(const std::string& id, const EventListener&);
- void unregisterListener(const std::string& id);
+ QPID_BROKER_EXTERN QueueEvents(const boost::shared_ptr<sys::Poller>& poller);
+ QPID_BROKER_EXTERN ~QueueEvents();
+ QPID_BROKER_EXTERN void enqueued(const QueuedMessage&);
+ QPID_BROKER_EXTERN void dequeued(const QueuedMessage&);
+ QPID_BROKER_EXTERN void registerListener(const std::string& id,
+ const EventListener&);
+ QPID_BROKER_EXTERN void unregisterListener(const std::string& id);
+ void enable();
+ void disable();
//process all outstanding events
- void shutdown();
+ QPID_BROKER_EXTERN void shutdown();
private:
typedef qpid::sys::PollableQueue<Event> EventQueue;
typedef std::map<std::string, EventListener> Listeners;
EventQueue eventQueue;
Listeners listeners;
+ volatile bool enabled;
qpid::sys::Mutex lock;//protect listeners from concurrent access
void handle(EventQueue::Queue& e);