Fixed a bug in the code which receives the strategy table in comlib;
authorLukasz Wesolowski <wesolwsk@talent.cs.illinois.edu>
Thu, 4 Nov 2010 21:58:20 +0000 (16:58 -0500)
committerLukasz Wesolowski <wesolwsk@talent.cs.illinois.edu>
Thu, 4 Nov 2010 21:58:20 +0000 (16:58 -0500)
the number of strategies in the table now gets updated;
bug was preventing buffered messages from getting sent after start up

src/conv-com/convcomlibmanager.C
src/conv-com/convcomlibmanager.h

index c58ae310dcc8870c75d7bfd27be5bb1b2b5e12b4..6f4682cd410e2800e2915054265e648195922879 100644 (file)
@@ -148,11 +148,13 @@ void *comlibReceiveTableHandler(void *msg) {
       // delete the old strategy. Since it is requested, it is safe
       delete current;
       current = NULL;
+      CkpvAccess(conv_com_object).decrementNumStrats(); 
     }
     if (current == NULL) {
       // if current is NULL either the strategy has never been set yet, or we
       // are replacing it
       CkpvAccess(conv_com_object).setStrategy(sw.position[i], sw.strategy[i]);
+      CkpvAccess(conv_com_object).incrementNumStrats(); 
     } else {
       // let's delete the incoming strategy since it is not used
       delete sw.strategy[i];
index 66e8a92b4babaca9ea047c586d42f4d8823d766f..000e1dd58ff0b4f55a9b378dbc880de36efcb886 100644 (file)
@@ -82,6 +82,8 @@ class ConvComlibManager {
   friend void *comlibReceiveTableHandler(void *msg);
  public:
   inline int getNumStrats() {return nstrats;}
+  inline void incrementNumStrats() {nstrats++;}
+  inline void decrementNumStrats() {nstrats--;}
   inline Strategy *getStrategy(int loc) {return strategyTable[loc].strategy;}
   inline int isReady(int loc) {return strategyTable[loc].isReady;}
   inline int isNew(int loc) {return strategyTable[loc].isNew;}