X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=application%2Fhub%2Finterfaces%2Fdistributable%2Fclass_Distributable.php;h=8adbc8d64b822eef96c3b40e86a24a9f7aacf22e;hb=52eda188511e59e5852d2321243e12bafcbe5be7;hp=f620265466d7be280f2a8721522e6f170275b505;hpb=ee61b6f76e197afd289b08379ecbf5ed7e35ddf9;p=hub.git diff --git a/application/hub/interfaces/distributable/class_Distributable.php b/application/hub/interfaces/distributable/class_Distributable.php index f62026546..8adbc8d64 100644 --- a/application/hub/interfaces/distributable/class_Distributable.php +++ b/application/hub/interfaces/distributable/class_Distributable.php @@ -2,11 +2,11 @@ /** * An interface for DHTs * - * @author Roland Haeder + * @author Roland Haeder * @version 0.0.0 * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 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 @@ -30,40 +30,73 @@ interface Distributable extends FrameworkInterface { 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 hasUnpublishedEntries (); + + /** + * 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. + * + * @return void */ - function findNodeBySessionId ($sessionId); + function initEntryPublication (); /** - * Registers an other node with this node by given message data. The - * following data must always be present: + * Checks whether there are entries pending publication * - * - 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 $isPending Whether there are entries pending publication + */ + function hasEntriesPendingPublication (); + + /** + * Publishes next entry found in stack. This method shall also update the + * corresponding dabase entry. * - * @param $messageData An array with all minimum message data - * @param $handlerInstance An instance of a Handleable class - * @param $forceUpdate Optionally force update, don't register (default: register if not found) * @return void */ - function registerNodeByMessageData (array $messageData, Handleable $handlerInstance, $forceUpdate = FALSE); + 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 (); /** - * Queries the local DHT data(base) for a node list with all supported - * object types except the node by given session id. + * Whether this DHT's state is 'booting' * - * @param $messageData An array with message data from a node_list request - * @param $handlerInstance An instance of a Handleable class - * @param $excludeKey Array key which should be excluded - * @param $andKey Array of $separator-separated list of elements which all must match - * @param $separator Sepator char (1st parameter for explode() call) - * @return $nodeList An array with all found nodes + * @return $isBooting Whether this DHT is currently booting */ - function queryLocalNodeListExceptByMessageData (array $messageData, Handleable $handlerInstance, $excludeKey, $andKey, $separator); + function ifDhtIsBooting (); } // [EOF]