[SampleSubjectのReady()] void SampleSubject::Ready(const OReadyEvent& event) { OSYSPRINT(("SampleSubject::Ready() : %s\n", event.IsAssert() ? "ASSERT READY" : "DEASSERT READY")); static int counter = 0; char str[32]; if (counter == 0) { //1回目の送信データ strcpy(str, "!!! Hello world !!!"); //データをセットする subject[sbjSendString]->SetData(str,sizeof(str)); //オブザーバにデータ送信 subject[sbjSendString]->NotifyObservers(); } else if (counter == 1) { //2回目の送信データ strcpy(str, "!!! Hello world again !!!"); //データをセットする subject[sbjSendString]->SetData(str,sizeof(str)); //オブザーバにデータ送信 subject[sbjSendString]->NotifyObservers(); } counter++; } [SampleObserverのNotify()] void SampleObserver::Notify(const ONotifyEvent& event) { //データを受信 const char* text = (const char *)event.Data(0); //データを表示 OSYSPRINT(("SampleObserver::Notify() %s\n", text)); //再びサブジェクトに対して,データ送信を要求 observer[event.ObsIndex()]->AssertReady(); }