[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(); }