6c0d1e9a6271f1a40c9914676bebd51750bb4585
[charm.git] / src / ck-ldb / NullLB.C
1 /*****************************************************************************
2  * $Source$
3  * $Author$
4  * $Date$
5  * $Revision$
6  *****************************************************************************/
7
8 #include <charm++.h>
9 #include <LBDatabase.h>
10 #include "NullLB.h"
11
12 void CreateNullLB(void)
13 {
14   CProxy_NullLB::ckNew();
15 }
16
17 static void initNullLB(void) {
18 #if CMK_LBDB_ON
19 //  LBSetDefaultCreate(CreateNullLB);
20 #endif
21 }
22
23 #if CMK_LBDB_ON
24 void NullLB::init(void)
25 {
26   thisproxy=thisgroup;
27   theLbdb=CProxy_LBDatabase(lbdb).ckLocalBranch();
28   theLbdb->
29     AddLocalBarrierReceiver((LDBarrierFn)(staticAtSync),
30                             (void*)(this));
31 }
32
33 void NullLB::staticAtSync(void* data)
34 {
35   NullLB *me = (NullLB*)(data);
36   me->AtSync();
37 }
38
39 void NullLB::AtSync()
40 {
41   //Reset the database so it doesn't waste memory
42   theLbdb->ClearLoads();
43   
44   //We don't *do* any migrations, so they're already done!
45   thisproxy[CkMyPe()].migrationsDone();
46 }
47 void NullLB::migrationsDone(void)
48 {
49   theLbdb->ResumeClients();
50 }
51 #else
52 /*No load balancer-- still need definitions to prevent linker errors.
53 I sure wish we had #ifdefs in the .ci file-- then we could avoid all this.
54 */
55 void NullLB::init(void) {}
56 void NullLB::staticAtSync(void* data) {}
57 void NullLB::AtSync() {}
58 void NullLB::migrationsDone(void) {}
59 #endif
60
61 #include "NullLB.def.h"