#include <PubSubSubspace.h>
Definition at line 81 of file PubSubSubspace.h.
PubSubSubspaceResponsible::PubSubSubspaceResponsible | ( | PubSubSubspaceId | id | ) |
Definition at line 63 of file PubSubSubspace.cc.
00064 : PubSubSubspaceIntermediate( id ) 00065 { 00066 backupNode = NodeHandle::UNSPECIFIED_NODE; 00067 heartbeatTimer = NULL; 00068 heartbeatFailCount = 0; 00069 totalChildrenCount = 0; 00070 }
bool PubSubSubspaceResponsible::addChild | ( | NodeHandle | node | ) | [virtual] |
Reimplemented from PubSubSubspaceIntermediate.
Definition at line 72 of file PubSubSubspace.cc.
Referenced by PubSubMMOG::handleSubscriptionBackup().
00073 { 00074 if( getNumChildren() + getNumIntermediates() < (int) maxChildren ) { 00075 // we still have room in our children list, add to our own 00076 if( PubSubSubspaceIntermediate::addChild( child ) ){ 00077 ++totalChildrenCount; 00078 } 00079 return true; 00080 } else { 00081 // Child has to go to an intermediate 00082 if( cachedChildren.insert( make_pair(child, false) ).second ){ 00083 ++totalChildrenCount; 00084 } 00085 return false; 00086 } 00087 }
void PubSubSubspaceResponsible::fixTotalChildrenCount | ( | ) |
Definition at line 118 of file PubSubSubspace.cc.
Referenced by PubSubMMOG::handleAdoptChildResponse(), PubSubMMOG::handleHelpResponse(), PubSubMMOG::handleIntermediateResponse(), PubSubMMOG::handlePingCallTimeout(), PubSubMMOG::handleSubscriptionCall(), PubSubMMOG::takeOverSubspace(), and PubSubMMOG::unsubscribeChild().
00119 { 00120 totalChildrenCount = children.size() + cachedChildren.size(); 00121 std::deque<IntermediateNode>::iterator it; 00122 for( it = intermediateNodes.begin(); it != intermediateNodes.end(); ++it ){ 00123 totalChildrenCount += it->children.size(); 00124 } 00125 }
const NodeHandle& PubSubSubspaceResponsible::getBackupNode | ( | ) | [inline] |
Definition at line 101 of file PubSubSubspace.h.
Referenced by PubSubMMOG::handleIntermediateResponse(), PubSubMMOG::handlePingCallTimeout(), PubSubMMOG::sendMessageToChildren(), and PubSubMMOG::unsubscribeChild().
00101 { return backupNode; }
int PubSubSubspaceResponsible::getHeartbeatFailCount | ( | ) | [inline] |
Definition at line 106 of file PubSubSubspace.h.
00106 { return heartbeatFailCount; }
PubSubTimer* PubSubSubspaceResponsible::getHeartbeatTimer | ( | ) | [inline] |
Definition at line 104 of file PubSubSubspace.h.
00104 { return heartbeatTimer; }
PubSubSubspaceResponsible::IntermediateNode * PubSubSubspaceResponsible::getNextFreeIntermediate | ( | ) |
Definition at line 106 of file PubSubSubspace.cc.
Referenced by PubSubMMOG::unsubscribeChild().
00107 { 00108 std::deque<IntermediateNode>::iterator it; 00109 for( it = intermediateNodes.begin(); it != intermediateNodes.end(); ++it ){ 00110 if( it->node.isUnspecified() ) continue; 00111 int childIntermediates = intermediateNodes.size() - (it - intermediateNodes.begin() +1 )* maxChildren; 00112 if( childIntermediates < 0 ) childIntermediates = 0; 00113 if( it->children.size() + it->waitingChildren + childIntermediates < maxChildren ) return &*it; 00114 } 00115 return NULL; 00116 }
int PubSubSubspaceResponsible::getNumIntermediates | ( | ) | [inline] |
Definition at line 113 of file PubSubSubspace.h.
Referenced by addChild(), PubSubMMOG::handleUnsubscribeBackup(), and PubSubMMOG::unsubscribeChild().
00113 { return intermediateNodes.size(); }
int PubSubSubspaceResponsible::getTotalChildrenCount | ( | ) | [inline] |
Definition at line 110 of file PubSubSubspace.h.
Referenced by PubSubMMOG::handleAdoptChildResponse(), PubSubMMOG::handleHelpResponse(), PubSubMMOG::handlePingCallTimeout(), PubSubMMOG::handleSubscriptionCall(), and PubSubMMOG::unsubscribeChild().
00110 { return totalChildrenCount; }
void PubSubSubspaceResponsible::incHeartbeatFailCount | ( | ) | [inline] |
Definition at line 107 of file PubSubSubspace.h.
00107 { ++heartbeatFailCount; }
PubSubSubspaceResponsible::IntermediateNode * PubSubSubspaceResponsible::removeAnyChild | ( | NodeHandle | node | ) | [virtual] |
Definition at line 89 of file PubSubSubspace.cc.
Referenced by PubSubMMOG::unsubscribeChild().
00090 { 00091 if( removeChild( child ) || cachedChildren.erase( child )){ 00092 --totalChildrenCount; 00093 return NULL; 00094 } else { 00095 std::deque<IntermediateNode>::iterator it; 00096 for( it = intermediateNodes.begin(); it != intermediateNodes.end(); ++it ){ 00097 if( it->children.erase( child ) ) { 00098 --totalChildrenCount; 00099 return &*it; 00100 } 00101 } 00102 return NULL; 00103 } 00104 }
void PubSubSubspaceResponsible::resetHeartbeatFailCount | ( | ) | [inline] |
Definition at line 108 of file PubSubSubspace.h.
00108 { heartbeatFailCount = 0; }
void PubSubSubspaceResponsible::setBackupNode | ( | NodeHandle | b | ) | [inline] |
Definition at line 100 of file PubSubSubspace.h.
Referenced by PubSubMMOG::handleHelpResponse(), and PubSubMMOG::handlePingCallTimeout().
00100 { backupNode = b; }
void PubSubSubspaceResponsible::setHeartbeatTimer | ( | PubSubTimer * | t | ) | [inline] |
Definition at line 103 of file PubSubSubspace.h.
Referenced by PubSubMMOG::handleBackupCall().
00103 { heartbeatTimer = t; }
std::ostream& operator<< | ( | std::ostream & | o, | |
const PubSubSubspaceResponsible & | subspace | |||
) | [friend] |
Definition at line 127 of file PubSubSubspace.cc.
00128 { 00129 o << dynamic_cast<const PubSubSubspaceIntermediate&>(subspace) << " BackupNode: " << subspace.backupNode; 00130 o << "\n cachedChildren:\n"; 00131 map<NodeHandle, bool>::const_iterator iit; 00132 for( iit = subspace.cachedChildren.begin(); iit != subspace.cachedChildren.end(); ++iit ){ 00133 o << " " << iit->first << " waiting: " << iit->second << "\n"; 00134 } 00135 o << " totalChildrenCount: " << subspace.totalChildrenCount; 00136 o << "\n IntermediateNodes:\n"; 00137 std::deque<PubSubSubspaceResponsible::IntermediateNode>::const_iterator it; 00138 for( it = subspace.intermediateNodes.begin(); it != subspace.intermediateNodes.end(); ++it ){ 00139 o << " " << it->node; 00140 o << "\n Children:\n"; 00141 for( set<NodeHandle>::iterator iit = it->children.begin(); iit != it->children.end(); ++iit ){ 00142 o << " " << *iit << "\n"; 00143 } 00144 } 00145 return o; 00146 }
NodeHandle PubSubSubspaceResponsible::backupNode [protected] |
Definition at line 120 of file PubSubSubspace.h.
Referenced by getBackupNode(), operator<<(), PubSubSubspaceResponsible(), and setBackupNode().
std::map<NodeHandle,bool> PubSubSubspaceResponsible::cachedChildren |
Definition at line 93 of file PubSubSubspace.h.
Referenced by addChild(), fixTotalChildrenCount(), PubSubMMOG::handleBackupCall(), PubSubMMOG::handleHelpResponse(), PubSubMMOG::handleIntermediateResponse(), PubSubMMOG::handlePingCallTimeout(), PubSubMMOG::handleSubscriptionBackup(), PubSubMMOG::handleUnsubscribeBackup(), operator<<(), PubSubMMOG::publishEvents(), removeAnyChild(), PubSubMMOG::sendMessageToChildren(), and PubSubMMOG::unsubscribeChild().
int PubSubSubspaceResponsible::heartbeatFailCount [protected] |
Definition at line 123 of file PubSubSubspace.h.
Referenced by getHeartbeatFailCount(), incHeartbeatFailCount(), PubSubSubspaceResponsible(), and resetHeartbeatFailCount().
PubSubTimer* PubSubSubspaceResponsible::heartbeatTimer [protected] |
Definition at line 122 of file PubSubSubspace.h.
Referenced by getHeartbeatTimer(), PubSubSubspaceResponsible(), and setHeartbeatTimer().
Definition at line 92 of file PubSubSubspace.h.
Referenced by fixTotalChildrenCount(), getNextFreeIntermediate(), getNumIntermediates(), PubSubMMOG::handleBackupCall(), PubSubMMOG::handleHelpResponse(), PubSubMMOG::handleIntermediateResponse(), PubSubMMOG::handlePingCallTimeout(), PubSubMMOG::handleSubscriptionBackup(), PubSubMMOG::handleUnsubscribeBackup(), operator<<(), PubSubMMOG::publishEvents(), removeAnyChild(), PubSubMMOG::sendMessageToChildren(), and PubSubMMOG::unsubscribeChild().
unsigned int PubSubSubspaceResponsible::maxChildren [static] |
Definition at line 97 of file PubSubSubspace.h.
Referenced by addChild(), getNextFreeIntermediate(), and PubSubMMOG::initializeOverlay().
int PubSubSubspaceResponsible::totalChildrenCount [protected] |
Definition at line 119 of file PubSubSubspace.h.
Referenced by addChild(), fixTotalChildrenCount(), getTotalChildrenCount(), operator<<(), PubSubSubspaceResponsible(), and removeAnyChild().
std::deque<PubSubMoveMessage*> PubSubSubspaceResponsible::waitingMoveMessages |
Definition at line 95 of file PubSubSubspace.h.
Referenced by PubSubMMOG::publishEvents().