Add notify observer related functions.

This commit is contained in:
putterman%netscape.com 1999-05-14 00:44:15 +00:00
Родитель ec4f295a6d
Коммит 32cb66b89e
2 изменённых файлов: 47 добавлений и 2 удалений

Просмотреть файл

@ -21,6 +21,7 @@
#include "rdf.h" #include "rdf.h"
#include "plstr.h" #include "plstr.h"
#include "nsXPIDLString.h" #include "nsXPIDLString.h"
#include "nsMsgRDFUtils.h"
static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID); static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID);
static NS_DEFINE_CID(kISupportsIID, NS_ISUPPORTS_IID); static NS_DEFINE_CID(kISupportsIID, NS_ISUPPORTS_IID);
@ -269,3 +270,43 @@ nsMsgRDFDataSource::getRDFService()
return mRDFService; 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, &note);
else
mObservers->EnumerateForwards(unassertEnumFunc, &note);
}
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;
}

Просмотреть файл

@ -144,6 +144,10 @@ class nsMsgRDFDataSource : public nsIRDFDataSource,
char *mURI; 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: private:
nsIRDFService *mRDFService; nsIRDFService *mRDFService;