Changeset 1c291d for src/Observer
- Timestamp:
- Mar 18, 2013, 6:29:41 PM (13 years ago)
- Children:
- 3f30cc
- Parents:
- b9273a
- git-author:
- Frederik Heber <heber@…> (03/18/13 18:22:47)
- git-committer:
- Frederik Heber <heber@…> (03/18/13 18:29:41)
- Location:
- src/Observer
- Files:
-
- 4 edited
-
Channels.cpp (modified) (3 diffs)
-
Notification.cpp (modified) (1 diff)
-
Observable.cpp (modified) (5 diffs)
-
unittests/ObserverUnitTest.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Observer/Channels.cpp
rb9273a r1c291d 34 34 for(NotificationTypetoRefMap::iterator iter = ChannelMap.begin(); 35 35 !ChannelMap.empty(); iter = ChannelMap.begin()) { 36 delete iter->second; 37 ChannelMap.erase(iter); 36 removeChannel(iter->first); 38 37 } 39 38 } … … 41 40 void Channels::addChannel(size_t no) 42 41 { 42 #ifdef NDEBUG 43 43 NotificationTypetoRefMap::const_iterator iter = ChannelMap.find(no); 44 44 ASSERT(iter == ChannelMap.end(), 45 45 "Channels::addChannel() - channel "+toString(int(no))+" is already present in ChannelMap."); 46 #endif 46 47 ChannelMap.insert( std::make_pair(no, new Notification(no)) ); 47 48 } … … 54 55 delete iter->second; 55 56 ChannelMap.erase(iter); 57 } 58 59 void Channels::subjectKilled(Observable * const publisher) 60 { 61 for(NotificationTypetoRefMap::iterator iter = ChannelMap.begin(); 62 iter != ChannelMap.end();++iter) { 63 iter->second->subjectKilled(publisher); 64 } 56 65 } 57 66 -
src/Observer/Notification.cpp
rb9273a r1c291d 47 47 } 48 48 } 49 50 void Notification::subjectKilled(Observable * const publisher) 51 { 52 for(std::set<Observer*>::iterator it=targets.begin(); 53 it!=targets.end();++it){ 54 (*it)->subjectKilled(publisher); 55 } 56 } -
src/Observer/Observable.cpp
rb9273a r1c291d 276 276 { 277 277 Notification_ptr notification = getChannel(channelno); 278 #ifdef LOG_OBSERVER 279 observerLog().addMessage() << "@@ Signing on " << observerLog().getName(target) 280 << " to " << observerLog().getName(const_cast<Observable *>(this)) 281 << "'s channel no." << channelno << "."; 282 #endif 278 283 notification->addObserver(target); 279 284 } … … 282 287 { 283 288 Notification_ptr notification = getChannel(channelno); 289 #ifdef LOG_OBSERVER 290 observerLog().addMessage() << "** Signing off " << observerLog().getName(target) 291 << " from " << observerLog().getName(const_cast<Observable *>(this)) 292 << "'s channel no." << channelno << "."; 293 #endif 284 294 notification->removeObserver(target); 285 295 } … … 315 325 #ifdef LOG_OBSERVER 316 326 observerLog().addName(this,name); 317 observerLog().addMessage() << "++ Creating Observable " << observerLog().getName(this); 327 observerLog().addMessage() << "++ Creating Observable " 328 << observerLog().getName(static_cast<Observable *>(this)); 318 329 #endif 319 330 } … … 325 336 { 326 337 #ifdef LOG_OBSERVER 327 observerLog().addMessage() << "-- Destroying Observable " << observerLog().getName(this); 338 observerLog().addMessage() << "-- Destroying Observable " 339 << observerLog().getName(static_cast<Observable *>(this)); 328 340 #endif 329 341 if(callTable.count(this)) { … … 331 343 callees_t callees = callTable[this]; 332 344 callees_t::iterator iter; 333 for(iter=callees.begin();iter!=callees.end();++iter) {345 for(iter=callees.begin();iter!=callees.end();++iter) 334 346 (*iter).second->subjectKilled(this); 335 }336 347 callTable.erase(this); 337 348 } 338 349 339 350 // also kill instance in static Channels map if present 340 ChannelMap::iterator iter = NotificationChannels.find( this);351 ChannelMap::iterator iter = NotificationChannels.find(static_cast<Observable *>(this)); 341 352 if (iter != NotificationChannels.end()) { 353 iter->second->subjectKilled(static_cast<Observable *>(this)); 342 354 delete iter->second; 343 355 NotificationChannels.erase(iter); -
src/Observer/unittests/ObserverUnitTest.cpp
rb9273a r1c291d 298 298 299 299 RelayNotified->wasNotified=false; 300 notificationObserver1->wasNotified=false; 300 301 301 302 // operation2 302 303 notificationObservable->operation2(); 303 304 CPPUNIT_ASSERT(!RelayNotified->wasNotified); 304 CPPUNIT_ASSERT( notificationObserver1->wasNotified);305 CPPUNIT_ASSERT(!notificationObserver1->wasNotified); 305 306 306 307 // signOff relay from 1 and operation1 … … 313 314 314 315 // test kill subject 316 RelayNotifier->signOff(RelayNotified, NotificationObservable::Operation1Notify); 315 317 delete RelayNotified; 316 318 RelayNotified = NULL; // delete in tearDown is allowed for NULL 317 319 notificationObservable->operation1(); 320 notificationObservable->signOff(RelayNotifier, NotificationObservable::Operation2Notify); 318 321 delete notificationObservable; 319 322 notificationObservable = NULL; // delete in tearDown is allowed for NULL
Note:
See TracChangeset
for help on using the changeset viewer.
