LB: Utility routines to unregister an object manager, such as for subsequent deletion
authorPhil Miller <mille121@illinois.edu>
Thu, 8 Aug 2013 20:32:33 +0000 (15:32 -0500)
committerPhil Miller <mille121@illinois.edu>
Tue, 20 Aug 2013 23:17:36 +0000 (18:17 -0500)
src/ck-ldb/LBDBManager.C
src/ck-ldb/LBDBManager.h
src/ck-ldb/LBDatabase.h
src/ck-ldb/lbdb.C
src/ck-ldb/lbdb.h

index bda759a64d7f5827a158fe21047720549cc8c38a..38b7dd336f9a95607e56d1cc499a5e5bd4942024 100644 (file)
@@ -93,6 +93,14 @@ LDOMHandle LBDB::AddOM(LDOMid _userID, void* _userData,
   return newhandle;
 }
 
+void LBDB::RemoveOM(LDOMHandle om)
+{
+  delete oms[om.handle];
+  oms[om.handle] = NULL;
+  omCount--;
+}
+
+
 #if CMK_BIGSIM_CHARM
 #define LBOBJ_OOC_IDX 0x1
 #endif
index 42ba537bac46541c0bb01f6d63f1741a49cb0d26..b94f86ad9c650a2e6680f1a947117edc091a4931 100644 (file)
@@ -69,6 +69,8 @@ public:
   void insert(LBOM *om);
 
   LDOMHandle AddOM(LDOMid _userID, void* _userData, LDCallbacks _callbacks);
+  void RemoveOM(LDOMHandle om);
+
   LDObjHandle AddObj(LDOMHandle _h, LDObjid _id, void *_userData,
                     bool _migratable);
   void UnregisterObj(LDObjHandle _h);
index cbb4ddb37ab9cccb7e377abda8cd900f3fe5e337..92bac39c8a8cad703a9e3979b5a11ed6fa196390 100644 (file)
@@ -190,6 +190,10 @@ public:
     return LDRegisterOM(myLDHandle,userID, userptr, cb);
   };
 
+  inline void UnregisterOM(LDOMHandle omHandle) {
+    return LDUnregisterOM(myLDHandle, omHandle);
+  };
+
   inline void RegisteringObjects(LDOMHandle _om) {
     LDRegisteringObjects(_om);
   };
index e7fe3673d7a1f6a2335b4e180581762c150ac4c7..da941956bb803e1b837635048391fbc6715ee040 100644 (file)
@@ -29,6 +29,12 @@ extern "C" LDOMHandle LDRegisterOM(LDHandle _db, LDOMid _userID,
   return db->AddOM(_userID, _userptr, _callbacks);
 }
 
+extern "C" void LDUnregisterOM(LDHandle _db, LDOMHandle om)
+{
+  LBDB *const db = (LBDB*)(_db.handle);
+  db->RemoveOM(om);
+}
+
 extern "C" void LDOMMetaLBResumeWaitingChares(LDHandle _db, int lb_ideal_period) {
   LBDB *const db = (LBDB*)(_db.handle);
   db->MetaLBResumeWaitingChares(lb_ideal_period);
index a40380b01766c2af6dd5935e0edd118f7fd3879c..af13e180144537c48fd6d5a12e6144ddec5a61b8 100644 (file)
@@ -253,6 +253,7 @@ LDHandle LDCreate(void);
 
 LDOMHandle LDRegisterOM(LDHandle _lbdb, LDOMid userID, 
                        void *userptr, LDCallbacks cb);
+void LDUnregisterOM(LDHandle _db, LDOMHandle handle);
 
 void LDOMMetaLBResumeWaitingChares(LDHandle _h, int lb_ideal_period);
 void LDOMMetaLBCallLBOnChares(LDHandle _h);