From 32cb66b89e8fb3e425b538f6d726b9dfa702abe2 Mon Sep 17 00:00:00 2001 From: "putterman%netscape.com" Date: Fri, 14 May 1999 00:44:15 +0000 Subject: [PATCH] Add notify observer related functions. --- mailnews/base/src/nsMsgRDFDataSource.cpp | 41 ++++++++++++++++++++++++ mailnews/base/src/nsMsgRDFDataSource.h | 8 +++-- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/mailnews/base/src/nsMsgRDFDataSource.cpp b/mailnews/base/src/nsMsgRDFDataSource.cpp index 511b490c4992..91fff61381bd 100644 --- a/mailnews/base/src/nsMsgRDFDataSource.cpp +++ b/mailnews/base/src/nsMsgRDFDataSource.cpp @@ -21,6 +21,7 @@ #include "rdf.h" #include "plstr.h" #include "nsXPIDLString.h" +#include "nsMsgRDFUtils.h" static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID); static NS_DEFINE_CID(kISupportsIID, NS_ISUPPORTS_IID); @@ -269,3 +270,43 @@ nsMsgRDFDataSource::getRDFService() return mRDFService; } + +nsresult nsMsgRDFDataSource::NotifyObservers(nsIRDFResource *subject, + nsIRDFResource *property, + nsIRDFNode *object, + PRBool assert) +{ + if(mObservers) + { + nsMsgRDFNotification note = { subject, property, object }; + if (assert) + mObservers->EnumerateForwards(assertEnumFunc, ¬e); + else + mObservers->EnumerateForwards(unassertEnumFunc, ¬e); + } + return NS_OK; +} + +PRBool +nsMsgRDFDataSource::assertEnumFunc(void *aElement, void *aData) +{ + nsMsgRDFNotification *note = (nsMsgRDFNotification *)aData; + nsIRDFObserver* observer = (nsIRDFObserver *)aElement; + + observer->OnAssert(note->subject, + note->property, + note->object); + return PR_TRUE; +} + +PRBool +nsMsgRDFDataSource::unassertEnumFunc(void *aElement, void *aData) +{ + nsMsgRDFNotification* note = (nsMsgRDFNotification *)aData; + nsIRDFObserver* observer = (nsIRDFObserver *)aElement; + + observer->OnUnassert(note->subject, + note->property, + note->object); + return PR_TRUE; +} \ No newline at end of file diff --git a/mailnews/base/src/nsMsgRDFDataSource.h b/mailnews/base/src/nsMsgRDFDataSource.h index cfeca68fd459..06adacb7025d 100644 --- a/mailnews/base/src/nsMsgRDFDataSource.h +++ b/mailnews/base/src/nsMsgRDFDataSource.h @@ -143,8 +143,12 @@ class nsMsgRDFDataSource : public nsIRDFDataSource, protected: char *mURI; - nsIRDFService *getRDFService(); - + nsIRDFService *getRDFService(); + static PRBool assertEnumFunc(void *aElement, void *aData); + static PRBool unassertEnumFunc(void *aElement, void *aData); + nsresult NotifyObservers(nsIRDFResource *subject, nsIRDFResource *property, + nsIRDFNode *object, PRBool assert); + private: nsIRDFService *mRDFService; nsVoidArray *mObservers;