Ignore:
Timestamp:
Dec 13, 2011, 10:45:00 AM (14 years ago)
Author:
Frederik Heber <heber@…>
Children:
d85532
Parents:
40f2e6
git-author:
Frederik Heber <heber@…> (12/02/11 13:05:49)
git-committer:
Frederik Heber <heber@…> (12/13/11 10:45:00)
Message:

Modified ObserverLog: Singleton and both output to screen and internal Log.

  • ObserverLog can now either be printed concurrently or later requested as string (e.g. on exit as has been done before). This should ease debugging Observer code.
  • enable/disableLogging() (dis)activate printing to screen.
  • ObserverLog is now a true singleton.

Details:

  • Implemented helper class ObserverLog::Log which is returned as boost::shared_ptr on addMessage() and can be streamed to.
  • On dstor the logged message is appended with endl, placed into ObserverLog's internal log and printed on screen if enableLogging().
  • NOTE: streaming std::endl is not working, and not necessary.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Patterns/Observer/Observable.cpp

    r40f2e6 r2c11c1  
    7777  // by the STL and initialized to 0 (see STL documentation)
    7878#ifdef LOG_OBSERVER
    79   observerLog().addMessage(depth[publisher]) << ">> Locking " << observerLog().getName(publisher) << std::endl;
     79  observerLog().addMessage(depth[publisher]) << ">> Locking " << observerLog().getName(publisher);
    8080#endif
    8181  depth[publisher]++;
     
    9898  --depth[publisher];
    9999#ifdef LOG_OBSERVER
    100   observerLog().addMessage(depth[publisher]) << "<< Unlocking " << observerLog().getName(publisher) << std::endl;
     100  observerLog().addMessage(depth[publisher]) << "<< Unlocking " << observerLog().getName(publisher);
    101101#endif
    102102  if(depth[publisher]){}
     
    165165        observerLog().addMessage() << "-> Sending update from " << observerLog().getName(this)
    166166                                   << " to " << observerLog().getName((*iter).second)
    167                                    << " (priority=" << (*iter).first << ")"<< std::endl;
     167                                   << " (priority=" << (*iter).first << ")";
    168168#endif
    169169        (*iter).second->update(this);
     
    211211#ifdef LOG_OBSERVER
    212212      observerLog().addMessage() << "-* Update from " << observerLog().getName(publisher)
    213                                  << " propagated by " << observerLog().getName(this) << std::endl;
     213                                 << " propagated by " << observerLog().getName(this);
    214214#endif
    215215      notifyAll();
     
    218218#ifdef LOG_OBSERVER
    219219      observerLog().addMessage() << "-| Update from " <<  observerLog().getName(publisher)
    220                                  << " not propagated by " << observerLog().getName(this) << std::endl;
     220                                 << " not propagated by " << observerLog().getName(this);
    221221#endif
    222222    }
     
    232232{
    233233#ifdef LOG_OBSERVER
    234   observerLog().addMessage() << "@@ Signing on " << observerLog().getName(target) << " to " << observerLog().getName(const_cast<Observable *>(this)) << std::endl;
     234  observerLog().addMessage() << "@@ Signing on " << observerLog().getName(target) << " to " << observerLog().getName(const_cast<Observable *>(this));
    235235#endif
    236236  bool res = false;
     
    254254      "SignOff called for an Observable without Observers.");
    255255#ifdef LOG_OBSERVER
    256   observerLog().addMessage() << "** Signing off " << observerLog().getName(target) << " from " << observerLog().getName(const_cast<Observable *>(this)) << std::endl;
     256  observerLog().addMessage() << "** Signing off " << observerLog().getName(target) << " from " << observerLog().getName(const_cast<Observable *>(this));
    257257#endif
    258258  callees_t &callees = callTable[const_cast<Observable *>(this)];
     
    315315#ifdef LOG_OBSERVER
    316316  observerLog().addName(this,name);
    317   observerLog().addMessage() << "++ Creating Observable " << observerLog().getName(this) << std::endl;
     317  observerLog().addMessage() << "++ Creating Observable " << observerLog().getName(this);
    318318#endif
    319319}
     
    325325{
    326326#ifdef LOG_OBSERVER
    327   observerLog().addMessage() << "-- Destroying Observable " << observerLog().getName(this) << std::endl;
     327  observerLog().addMessage() << "-- Destroying Observable " << observerLog().getName(this);
    328328#endif
    329329  if(callTable.count(this)) {
Note: See TracChangeset for help on using the changeset viewer.