00001 #ifndef NOTIFIER_HPP
00002 #define NOTIFIER_HPP
00003
00004 #include "Listener.hpp"
00005
00006 #include <vector>
00007 #include <cassert>
00008
00009
00010 template <typename MessageType>
00011 class Notifier
00012 {
00013 private:
00014
00015 std::vector<Listener<MessageType>*> m_listeners;
00017 public:
00018
00022 void addListener(Listener<MessageType>* pListener)
00023 {
00024 assert(pListener);
00025 m_listeners.push_back(pListener);
00026 }
00027
00031 void notify(const MessageType& message)
00032 {
00033
00034
00035 for ( typename std::vector<Listener<MessageType>*>::const_iterator itListener = m_listeners.begin() ; itListener != m_listeners.end() ; ++itListener )
00036 {
00037 (*itListener)->notify(message);
00038 }
00039 }
00040
00047 };
00048
00049 #endif