Changeset f3d16a
- Timestamp:
- Jul 14, 2014, 8:36:58 PM (11 years ago)
- Children:
- e93bfe
- Parents:
- 44f368
- git-author:
- Frederik Heber <heber@…> (10/15/13 13:31:42)
- git-committer:
- Frederik Heber <heber@…> (07/14/14 20:36:58)
- Location:
- src
- Files:
-
- 5 edited
-
CodePatterns/Observer/Observable.hpp (modified) (2 diffs)
-
CodePatterns/Observer/Zombie.hpp (modified) (1 diff)
-
Observer/Graveyard.cpp (modified) (3 diffs)
-
Observer/Notification.cpp (modified) (2 diffs)
-
Observer/Observable.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/CodePatterns/Observer/Observable.hpp
r44f368 rf3d16a 141 141 typedef boost::function<void (const Observable*)> graveyard_informer_t; 142 142 143 //!> bound function to call when Observer are signing off 144 graveyard_informer_t &graveyard_informer; 143 /** Bound function to call when Observer are signing off (needs to be a ptr 144 * as we must be able to rebound it. 145 * 146 * \warning Do not delete this pointer, the instance is either a static one 147 * or handled someplace else (e.g. in the Graveyard). 148 */ 149 graveyard_informer_t * graveyard_informer; 145 150 146 151 //!> default informer that does nothing … … 149 154 /** Sets the bound function for over-time life-time management. 150 155 * 151 * \param _graveyard Graveyard to inform of leaving Observers156 * \param _graveyard ptr Graveyard to inform of leaving Observers 152 157 */ 153 void setGraveyardInformer(graveyard_informer_t &_graveyard_informer)158 void setGraveyardInformer(graveyard_informer_t * _graveyard_informer) 154 159 { 155 160 graveyard_informer = _graveyard_informer; -
src/CodePatterns/Observer/Zombie.hpp
r44f368 rf3d16a 34 34 * 35 35 * Is private to allow only Graveyard to instantiate them. 36 * 37 * \param _observable observable to wrap, ptr is NULL'd 38 * \param _graveyard_informer callback when Observers are signOff()'ing 36 39 */ 37 40 Zombie( 38 41 Observable *& _observable, 39 Observable::graveyard_informer_t _graveyard_informer) :42 Observable::graveyard_informer_t *_graveyard_informer) : 40 43 m_observable(_observable) 41 44 { -
src/Observer/Graveyard.cpp
r44f368 rf3d16a 36 36 37 37 #include "CodePatterns/Observer/Graveyard.hpp" 38 #include "CodePatterns/Observer/ObserverLog.hpp" 38 39 39 40 #include <boost/bind.hpp> … … 54 55 { 55 56 // LOG(1, "Adding Observable "+toString(_observable)+"."); 56 Zombie::ptr newzombie(new Zombie(_observable, graveyard_informer)); 57 #ifdef LOG_OBSERVER 58 observerLog().addMessage(0) << "++ Turning " << observerLog().getName(_observable) 59 << " into a Zombie."; 60 #endif 61 Zombie::ptr newzombie(new Zombie(_observable, &graveyard_informer)); 57 62 if (newzombie->getNumberOfObservers() != 0) 58 63 graveyard.insert( std::make_pair(newzombie->getPtr(), newzombie) ); … … 63 68 graveyard_t::iterator iter = graveyard.find(_observable); 64 69 if (iter != graveyard.end()) { 70 #ifdef LOG_OBSERVER 71 observerLog().addMessage(0) << "++ Zombie " << observerLog().getName(const_cast<Observable *>(_observable)) 72 << " has " << iter->second->getNumberOfObservers() << " Observers left."; 73 #endif 65 74 // remove zombie if no Observers are left 66 75 if (iter->second->getNumberOfObservers() == 0) -
src/Observer/Notification.cpp
r44f368 rf3d16a 22 22 #include "CodePatterns/Observer/Notification.hpp" 23 23 #include "CodePatterns/Observer/Observer.hpp" 24 24 #include "CodePatterns/Observer/ObserverLog.hpp" 25 25 26 26 Notification::Notification(size_t _channelno) : … … 44 44 for(std::set<Observer*>::iterator it=targets.begin(); 45 45 it!=targets.end();++it){ 46 #ifdef LOG_OBSERVER 47 observerLog().addMessage() << "-> Sending update from " << observerLog().getName(publisher) 48 << " for channel " << channelno 49 << " to " << observerLog().getName(*it); 50 #endif 46 51 (*it)->recieveNotification(publisher,this); 47 52 } -
src/Observer/Observable.cpp
r44f368 rf3d16a 276 276 callTable.erase(const_cast<Observable *>(this)); 277 277 } 278 graveyard_informer(this);278 (*graveyard_informer)(this); 279 279 } 280 280 … … 299 299 #endif 300 300 notification->removeObserver(target); 301 graveyard_informer(this);301 (*graveyard_informer)(this); 302 302 } 303 303 … … 352 352 Observable::Observable(std::string name) : 353 353 Observer(Observer::BaseConstructor()), 354 graveyard_informer( noop_informer)354 graveyard_informer(&noop_informer) 355 355 { 356 356 #ifdef LOG_OBSERVER
Note:
See TracChangeset
for help on using the changeset viewer.
