Changeset 8fe1e2
- Timestamp:
- Dec 13, 2011, 9:46:12 AM (14 years ago)
- Children:
- 75d156
- Parents:
- 549b62
- git-author:
- Frederik Heber <heber@…> (12/02/11 09:58:19)
- git-committer:
- Frederik Heber <heber@…> (12/13/11 09:46:12)
- Location:
- src/Patterns
- Files:
-
- 3 edited
-
Cacheable.hpp (modified) (1 diff)
-
Observer/Observable.cpp (modified) (4 diffs)
-
Observer/Observable.hpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Patterns/Cacheable.hpp
r549b62 r8fe1e2 180 180 // we sign on with the best(=lowest) priority, so cached values are recalculated before 181 181 // anybody else might ask for updated values 182 owner->signOn(this, -20);182 owner->signOn(this,Observable::PriorityLevel(int(-20))); 183 183 } 184 184 -
src/Patterns/Observer/Observable.cpp
r549b62 r8fe1e2 20 20 #include "MemDebug.hpp" 21 21 22 #include "Observable.hpp" 23 22 24 #include "Assert.hpp" 23 25 #include "Channels.hpp" 26 #include "defs.hpp" 24 27 #include "Notification.hpp" 25 #include "Observable.hpp"26 28 27 29 … … 36 38 std::map<Observable*, int> Observable::depth; //!< Map of Observables to the depth of the DAG of Observers 37 39 std::map<Observable*,std::multimap<int,Observer*> > Observable::callTable; //!< Table for each Observable of all its Observers 38 std::map<Observable*,std::set<Notification*> > Observable::notifications; 40 std::map<Observable*,std::set<Notification*> > Observable::notifications; //!< Table for all current notifications to perform 39 41 std::set<Observable*> Observable::busyObservables; //!< Set of Observables that are currently busy notifying their sign-on'ed Observers 40 42 Observable::ChannelMap Observable::NotificationChannels; //!< Map of Observables to their Channels. 43 44 // ValidRange must be initialized before PriorityLevel. 45 range<int> Observable::PriorityLevel::ValidRange(-20, 21); 46 Observable::PriorityLevel Observable::PriorityDefault(int(0)); 47 48 /** Constructor of PriorityLevel. 49 * 50 * \note We check whether the level is within Observable::PriorityLevel::ValidRange. 51 * 52 * @param i priority level encapsulated in this class. 53 */ 54 Observable::PriorityLevel::PriorityLevel(const int i) : 55 level(i) 56 { 57 ASSERT(ValidRange.isInRange(level), 58 "Observable::PriorityLevel::PriorityLevel() - Priority level " 59 +toString(level)+" out of range "+toString(ValidRange)+"."); 60 } 61 62 Observable::PriorityLevel::~PriorityLevel() 63 {} 41 64 42 65 /** Attaching Sub-observables to Observables. … … 206 229 * \param priority number in [-20,20] 207 230 */ 208 void Observable::signOn(Observer *target,int priority) const 209 { 210 ASSERT(priority>=-20 && priority<=+20, 211 "Priority out of range [-20:+20] when signing on Observer"); 231 void Observable::signOn(Observer *target, PriorityLevel priority) const 232 { 212 233 #ifdef LOG_OBSERVER 213 234 observerLog().addMessage() << "@@ Signing on " << observerLog().getName(target) << " to " << observerLog().getName(const_cast<Observable *>(this)) << std::endl; … … 221 242 } 222 243 if(!res) 223 callees.insert(std::pair<int,Observer*>(priority ,target));244 callees.insert(std::pair<int,Observer*>(priority.level,target)); 224 245 } 225 246 -
src/Patterns/Observer/Observable.hpp
r549b62 r8fe1e2 18 18 #include <string> 19 19 20 #include "Range.hpp" 20 21 #include "Observer/defs.hpp" 21 22 #include "Observer/Observer.hpp" … … 35 36 virtual ~Observable(); 36 37 38 /** This class is only used to distinguish from size_t in the overload. 39 * 40 * It encapsulates a const int (the priority level) and checks valid bounds 41 * in constructor. 42 * 43 */ 44 class PriorityLevel { 45 public: 46 explicit PriorityLevel(const int i); 47 ~PriorityLevel(); 48 49 const int level; 50 private: 51 static range<int> ValidRange; 52 }; 53 37 54 /** 38 55 * Sign an Observer on to this Observable. The Observer will be notified … … 46 63 * ussually no need to order the update sequence. 47 64 */ 48 virtual void signOn(Observer *target, int priority=0) const;65 virtual void signOn(Observer *target, PriorityLevel priority = PriorityDefault) const; 49 66 50 67 /** … … 95 112 static ChannelMap NotificationChannels; 96 113 114 static PriorityLevel PriorityDefault; 115 97 116 private: 98 117 typedef std::multimap<int,Observer*> callees_t;
Note:
See TracChangeset
for help on using the changeset viewer.
