next up previous
Next: 4 AIBOを動かすには Up: 3.3 オブジェクト間通信 Previous: 3.3.7 SampleSubjectのソース

3.3.8 SampleObserverのソース


[SampleObserver.h]

class SampleObserver : public OObject {
 public:
  SampleObserver();
  virtual ~SampleObserver() {}
  
  OSubject*    subject[numOfSubject];
  OObserver*   observer[numOfObserver];
  
  virtual OStatus DoInit   (const OSystemEvent& event);
  virtual OStatus DoStart  (const OSystemEvent& event);
  virtual OStatus DoStop   (const OSystemEvent& event);
  virtual OStatus DoDestroy(const OSystemEvent& event);

  void Notify(const ONotifyEvent& event);
};

[SampleObserver.cc]

#include <OPENR/OSyslog.h>
#include <OPENR/core_macro.h>
#include "SampleObserver.h"

SampleObserver::SampleObserver()
{
}

OStatus
SampleObserver::DoInit(const OSystemEvent& event)
{
  NEW_ALL_SUBJECT_AND_OBSERVER;
  REGISTER_ALL_ENTRY;
  SET_ALL_READY_AND_NOTIFY_ENTRY;
  return oSUCCESS;
}

OStatus
SampleObserver::DoStart(const OSystemEvent& event)
{
  ENABLE_ALL_SUBJECT;
  ASSERT_READY_TO_ALL_OBSERVER;
  return oSUCCESS;
}

OStatus
SampleObserver::DoStop(const OSystemEvent& event)
{
  DISABLE_ALL_SUBJECT;
  DEASSERT_READY_TO_ALL_OBSERVER;
  return oSUCCESS;
}

OStatus
SampleObserver::DoDestroy(const OSystemEvent& event)
{
  DELETE_ALL_SUBJECT_AND_OBSERVER;
  return oSUCCESS;
}

void
SampleObserver::Notify(const ONotifyEvent& event)
{
  const char* text = (const char *)event.Data(0);
  OSYSPRINT(("SampleObserver::Notify() %s\n", text));
  observer[event.ObsIndex()]->AssertReady();
}


generated through LaTeX2HTML. M.Inaba 平成18年5月6日