Changeset f3d16a for src/Observer


Ignore:
Timestamp:
Jul 14, 2014, 8:36:58 PM (11 years ago)
Author:
Frederik Heber <heber@…>
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)
Message:

FIX: Fixes to Graveyard and Zombies.

Location:
src/Observer
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/Observer/Graveyard.cpp

    r44f368 rf3d16a  
    3636
    3737#include "CodePatterns/Observer/Graveyard.hpp"
     38#include "CodePatterns/Observer/ObserverLog.hpp"
    3839
    3940#include <boost/bind.hpp>
     
    5455{
    5556//  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));
    5762  if (newzombie->getNumberOfObservers() != 0)
    5863    graveyard.insert( std::make_pair(newzombie->getPtr(), newzombie) );
     
    6368  graveyard_t::iterator iter = graveyard.find(_observable);
    6469  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
    6574    // remove zombie if no Observers are left
    6675    if (iter->second->getNumberOfObservers() == 0)
  • src/Observer/Notification.cpp

    r44f368 rf3d16a  
    2222#include "CodePatterns/Observer/Notification.hpp"
    2323#include "CodePatterns/Observer/Observer.hpp"
    24 
     24#include "CodePatterns/Observer/ObserverLog.hpp"
    2525
    2626Notification::Notification(size_t _channelno) :
     
    4444  for(std::set<Observer*>::iterator it=targets.begin();
    4545      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
    4651    (*it)->recieveNotification(publisher,this);
    4752  }
  • src/Observer/Observable.cpp

    r44f368 rf3d16a  
    276276    callTable.erase(const_cast<Observable *>(this));
    277277  }
    278   graveyard_informer(this);
     278  (*graveyard_informer)(this);
    279279}
    280280
     
    299299#endif
    300300  notification->removeObserver(target);
    301   graveyard_informer(this);
     301  (*graveyard_informer)(this);
    302302}
    303303
     
    352352Observable::Observable(std::string name) :
    353353  Observer(Observer::BaseConstructor()),
    354   graveyard_informer(noop_informer)
     354  graveyard_informer(&noop_informer)
    355355{
    356356#ifdef LOG_OBSERVER
Note: See TracChangeset for help on using the changeset viewer.