*/
private $acceptAnnouncements = FALSE;
+ /**
+ * Whether this node accepts DHT bootstrap requests (default: FALSE)
+ */
+ private $acceptDhtBootstrap = FALSE;
+
/**
* Protected constructor
*
$this->bootIpPort = $ipPort;
// Output message
- self::createDebugInstance(__CLASS__)->debugOutput('BOOTSTRAP: ' . __FUNCTION__ . '[' . __LINE__ . ']: IP matches remote address ' . $ipPort . '.');
+ self::createDebugInstance(__CLASS__)->debugOutput('BOOTSTRAP: ' . __FUNCTION__ . '[' . __METHOD__ . ':' . __LINE__ . ']: IP matches remote address ' . $ipPort . '.');
// Stop further searching
break;
$this->bootIpPort = $ipPort;
// Output message
- self::createDebugInstance(__CLASS__)->debugOutput('BOOTSTRAP: ' . __FUNCTION__ . '[' . __LINE__ . ']: IP matches listen address ' . $ipPort . '.');
+ self::createDebugInstance(__CLASS__)->debugOutput('BOOTSTRAP: ' . __FUNCTION__ . '[' . __METHOD__ . ':' . __LINE__ . ']: IP matches listen address ' . $ipPort . '.');
// Stop further searching
break;
$helperInstance->sendPackage($this);
// Change the state, this should be the last line except debug output
- $this->getStateInstance()->nodeAnnouncedToUpperHubs();
+ $this->getStateInstance()->nodeAnnouncingToUpperHubs();
// Debug output
self::createDebugInstance(__CLASS__)->debugOutput('HUB-Announcement: FINISHED');
*/
public function doSelfConnection (Taskable $taskInstance) {
// Debug output
- self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __LINE__ . ']: Self Connection: START (taskInstance=' . $taskInstance->__toString(). ')');
+ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __METHOD__ . ':' . __LINE__ . ']: Self Connection: START (taskInstance=' . $taskInstance->__toString(). ')');
// Get a helper instance
$helperInstance = ObjectFactory::createObjectByConfiguredName('node_self_connect_helper_class', array($this));
$helperInstance->sendPackage($this);
// Debug output
- self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __LINE__ . ']: Self Connection: FINISHED');
+ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __METHOD__ . ':' . __LINE__ . ']: Self Connection: FINISHED');
}
/**
*/
public function initializeListenerPool () {
// Debug output
- self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __LINE__ . ']: Initialize listener: START');
+ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __METHOD__ . ':' . __LINE__ . ']: Initialize listener: START');
// Get a new pool instance
$this->setListenerPoolInstance(ObjectFactory::createObjectByConfiguredName('listener_pool_class', array($this)));
$this->getListenerPoolInstance()->addListener($decoratorInstance);
// Debug output
- self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __LINE__ . ']: Initialize listener: FINISHED.');
+ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __METHOD__ . ':' . __LINE__ . ']: Initialize listener: FINISHED.');
}
/**
return $acceptAnnouncements;
}
+ /**
+ * Checks whether this node accepts DHT bootstrap requests
+ *
+ * @return $acceptDhtBootstrap Whether this node accepts DHT bootstrap requests
+ */
+ public final function isAcceptingDhtBootstrap () {
+ // Check it (this node must be active and not shutdown!)
+ $acceptDhtBootstrap = (($this->acceptDhtBootstrap === TRUE) && ($this->isNodeActive()));
+
+ // Return it
+ return $acceptDhtBootstrap;
+ }
+
/**
* Checks whether this node has attempted to announce itself
*
*/
public function ifNodeHasAnnounced () {
// Debug message
- /* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __LINE__ . ']: ifNodeHasAnnounced(): state=' . $this->getStateInstance()->getStateName());
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __METHOD__ . ':' . __LINE__ . ']: ifNodeHasAnnounced(): state=' . $this->getStateInstance()->getStateName());
// Simply check the state of this node
$hasAnnounced = ($this->getStateInstance() instanceof NodeAnnouncedState);
// Debug message
- /* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __LINE__ . ']: ifNodeHasAnnounced(): hasAnnounced=' . intval($hasAnnounced));
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __METHOD__ . ':' . __LINE__ . ']: ifNodeHasAnnounced(): hasAnnounced=' . intval($hasAnnounced));
// Return it
return $hasAnnounced;
*/
public function ifNodeHasAnnouncementCompleted () {
// Debug message
- /* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __LINE__ . ']: ifNodeHasAnnouncementCompleted(): state=' . $this->getStateInstance()->getStateName());
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __METHOD__ . ':' . __LINE__ . ']: ifNodeHasAnnouncementCompleted(): state=' . $this->getStateInstance()->getStateName());
// Simply check the state of this node
$hasAnnouncementCompleted = ($this->getStateInstance() instanceof NodeAnnouncementCompletedState);
// Debug message
- /* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __LINE__ . ']: ifNodeHasAnnouncementCompleted(): hasAnnouncementCompleted=' . intval($hasAnnouncementCompleted));
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __METHOD__ . ':' . __LINE__ . ']: ifNodeHasAnnouncementCompleted(): hasAnnouncementCompleted=' . intval($hasAnnouncementCompleted));
// Return it
return $hasAnnouncementCompleted;
$this->acceptAnnouncements = $acceptAnnouncements;
}
+ /**
+ * Enables whether this node accepts DHT bootstrap requests
+ *
+ * @param $acceptDhtBootstrap Whether this node accepts DHT bootstrap requests (default: TRUE)
+ * @return void
+ */
+ public final function enableAcceptDhtBootstrap ($acceptDhtBootstrap = TRUE) {
+ /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __METHOD__ . ':' . __LINE__ . ']: Enabling DHT bootstrap requests ...');
+ $this->acceptDhtBootstrap = $acceptDhtBootstrap;
+ }
+
/**
* Checks wether this node is accepting node-list requests
*
$dataSetInstance->addCriteria($element, $nodeData[$element]);
} else {
// Output warning message
- /* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __LINE__ . ']: addArrayToDataSet(): Element ' . $element . ' not found in nodeData array.');
+ /* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NODE[' . __METHOD__ . ':' . __LINE__ . ']: addArrayToDataSet(): Element ' . $element . ' not found in nodeData array.');
}
} // END - foreac
}