[GME-commit]
GMESRC/GME/Mga MgaProject.cpp,1.43,1.44 MgaProject.h,1.21,1.22
gme-commit at list.isis.vanderbilt.edu
gme-commit at list.isis.vanderbilt.edu
Tue Mar 9 16:15:35 CST 2004
Update of /var/lib/gme/GMESRC/GME/Mga
In directory braindrain:/tmp/cvs-serv27160
Modified Files:
MgaProject.cpp MgaProject.h
Log Message:
Support for application specific notifications is added to the MGA layer. (IMgaProject::Notify).
Global notifications are allowed to be sent outside of transactions. Application specific notifications should
have APPEVENT_ prefix, see the XML import messages)
CVS User: volgy
Index: MgaProject.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Mga/MgaProject.cpp,v
retrieving revision 1.43
retrieving revision 1.44
diff -C2 -d -r1.43 -r1.44
*** MgaProject.cpp 18 Dec 2003 13:28:41 -0000 1.43
--- MgaProject.cpp 9 Mar 2004 22:15:32 -0000 1.44
***************
*** 1099,1103 ****
// self[ATTRID_MDATE] = Now();
}
! COMTHROW(Notify(0));
baseterr = activeterr= NULL;
COMTHROW(dataproject->PopTerritory());
--- 1099,1103 ----
// self[ATTRID_MDATE] = Now();
}
! COMTHROW(CommitNotify());
baseterr = activeterr= NULL;
COMTHROW(dataproject->PopTerritory());
***************
*** 1195,1232 ****
}
! STDMETHODIMP CMgaProject::Notify(long unusedmask) {
if(read_only) {
! ASSERT(changedobjs.empty() && notifyobjs.empty());
! return S_OK;
! }
COMTRY {
! if(!baseterr) COMTHROW(E_MGA_NOT_IN_TRANSACTION);
!
! if(!changedobjs.empty()) notifyqueueprocessed = true;
! while(!changedobjs.empty()) {
! FCOPtr f = changedobjs.front();
! changedobjs.pop();
#if(1)
! COMTHROW(f->objrwnotify());
#else
! if(f->objrwnotify() != S_OK) {
! ASSERT(("Notification failed", false));
! }
#endif
! }
!
! read_only = true;
! while(!notifyobjs.empty()) {
! FCOPtr f = notifyobjs.front();
! notifyobjs.pop();
! if(f->objnotify() != S_OK) {
! ASSERT(("Notification failed", false));
! }
! }
! COMTHROW(GlobalNotify(GLOBALEVENT_NOTIFICATION_READY));
! read_only = false;
} COMCATCH( read_only = false;);
}
--- 1195,1248 ----
}
! STDMETHODIMP CMgaProject::Notify(globalevent_enum event) {
! COMTRY {
! if(baseterr) COMTHROW(E_MGA_ALREADY_IN_TRANSACTION);
! {
! CComPtr<IMgaTerritory> t;
! COMTHROW(CreateTerritory(NULL, &t));
! COMTHROW(BeginTransaction(t, TRANSACTION_READ_ONLY));
! GlobalNotify(event);
! COMTHROW(CommitTransaction());
! }
! }
! COMCATCH(;);
! }
!
!
! STDMETHODIMP CMgaProject::CommitNotify() {
if(read_only) {
! ASSERT(changedobjs.empty() && notifyobjs.empty());
! return S_OK;
! }
COMTRY {
! if(!baseterr) COMTHROW(E_MGA_NOT_IN_TRANSACTION);
!
! if(!changedobjs.empty()) notifyqueueprocessed = true;
! while(!changedobjs.empty()) {
! FCOPtr f = changedobjs.front();
! changedobjs.pop();
#if(1)
! COMTHROW(f->objrwnotify());
#else
! if(f->objrwnotify() != S_OK) {
! ASSERT(("Notification failed", false));
! }
#endif
! }
!
! read_only = true;
! while(!notifyobjs.empty()) {
! FCOPtr f = notifyobjs.front();
! notifyobjs.pop();
! if(f->objnotify() != S_OK) {
! ASSERT(("Notification failed", false));
! }
! }
! COMTHROW(GlobalNotify(GLOBALEVENT_NOTIFICATION_READY));
! read_only = false;
} COMCATCH( read_only = false;);
}
+
Index: MgaProject.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Mga/MgaProject.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -d -r1.21 -r1.22
*** MgaProject.h 17 Dec 2003 13:45:03 -0000 1.21
--- MgaProject.h 9 Mar 2004 22:15:32 -0000 1.22
***************
*** 104,110 ****
STDMETHOD(get_ProjectStatus)(long *stat);
STDMETHOD(CommitTransaction)();
STDMETHOD(CheckSupress)(VARIANT_BOOL);
STDMETHOD(GlobalNotify)(globalevent_enum msg);
! STDMETHOD(Notify)(long mask);
STDMETHOD(Redo)();
STDMETHOD(Undo)();
--- 104,111 ----
STDMETHOD(get_ProjectStatus)(long *stat);
STDMETHOD(CommitTransaction)();
+ STDMETHOD(CommitNotify)();
STDMETHOD(CheckSupress)(VARIANT_BOOL);
STDMETHOD(GlobalNotify)(globalevent_enum msg);
! STDMETHOD(Notify)(globalevent_enum event);
STDMETHOD(Redo)();
STDMETHOD(Undo)();
More information about the GME-commit
mailing list