/**
* An interface for DHTs
*
- * @author Roland Haeder <webmaster@ship-simu.org>
+ * @author Roland Haeder <webmaster@shipsimu.org>
* @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Hub Developer Team
+ * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Hub Developer Team
* @license GNU GPL 3.0 or any newer version
- * @link http://www.ship-simu.org
+ * @link http://www.shipsimu.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
function initDht ();
/**
- * Finds a node by given session id
+ * Bootstraps the DHT by sending out a message to all available nodes
+ * (including itself). This step helps the node to get to know more nodes
+ * which can be queried later for object distribution.
*
- * @param $sessionId Session id to lookup
- * @return $nodeData Node data array
+ * @return void
+ */
+ function bootstrapDht ();
+
+ /**
+ * Updates/refreshes DHT data (e.g. status).
+ *
+ * @return void
+ */
+ function updateDhtData ();
+
+ /**
+ * Checks whether there are unpublished entries
+ *
+ * @return $hasUnpublished Whether there are unpublished entries
*/
- function findNodeBySessionId ($sessionId);
+ function hasUnpublishedEntries ();
/**
- * Registers an other node with this node by given message data. The
- * following data must always be present:
+ * Initializes publication of DHT entries. This does only prepare
+ * publication. The next step is to pickup such prepared entries and publish
+ * them by uploading to other (recently appeared) DHT members.
*
- * - session-id (for finding the node's record together with below data)
- * - external-ip (hostname or IP number)
- * - listen-port (TCP/UDP listen port for inbound connections)
+ * @return void
+ */
+ function initEntryPublication ();
+
+ /**
+ * Checks whether there are entries pending publication
+ *
+ * @return $isPending Whether there are entries pending publication
+ */
+ function hasEntriesPendingPublication ();
+
+ /**
+ * Publishes next entry found in stack. This method shall also update the
+ * corresponding dabase entry.
+ *
+ * @return void
+ */
+ function publishEntry ();
+
+ /**
+ * Find recipients for given package data
+ *
+ * @param $packageData An array of valid package data
+ * @return $recipients An indexed array with DHT recipients
+ */
+ function findRecipientsByPackageData (array $packageData);
+
+ /**
+ * Whether the DHT has fully bootstrapped (after state 'booting')
+ *
+ * @return $isFullyBooted Whether the DHT is fully booted
+ */
+ function hasFullyBootstrapped ();
+
+ /**
+ * Whether this DHT's state is 'booting'
+ *
+ * @return $isBooting Whether this DHT is currently booting
+ */
+ function ifDhtIsBooting ();
+
+ /**
+ * Finds DHT recipients by given key/value pair
+ *
+ * @param $key Key to search for
+ * @param $value Value to check on found key
+ * @return $recipientList Array with DHT recipients from given key/value pair
+ */
+ function findRecipientsByKey ($key, $value);
+
+ /**
+ * Enable DHT bootstrap request acceptance for local node
*
- * @param $messageArray An array with all minimum message data
- * @param $handlerInstance An instance of a HandleableMessage class
* @return void
*/
- function registerNodeByMessageData (array $messageData, HandleableMessage $handlerInstance);
+ function enableAcceptDhtBootstrap ();
}
// [EOF]