-<?php
/**
* Configuration entries for this application only
*
*
* @param $recipient Recipient to resolve (e.g. could be a virtual recipient or direct session id)
* @param $listInstance An instance of a Listable class
+ * @param $packageData Valid package data array
* @return $resolved Resolved recipient or VOID if only the set list has been filled
* @throws FrameworkException Could throw different exceptions depending on implementation
*/
- function resolveRecipient ($recipient, Listable $listInstance);
+ function resolveRecipient ($recipient, Listable $listInstance, array $packageData);
}
// [EOF]
$recipientInstance = ObjectFactory::createObjectByConfiguredName('direct_recipient_class');
// Try to solve it
- $recipientInstance->resolveRecipient($packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT], $this->getListInstance());
+ $recipientInstance->resolveRecipient($packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT], $this->getListInstance(), $packageData);
} catch (FrameworkException $e) {
// Didn't work, so try the non-generic, depending recipient field itself (this may fail)
try {
$recipientInstance = ObjectFactory::createObjectByConfiguredName(strtolower($packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT]) . '_recipient_class');
// And try to solve again
- $recipientInstance->resolveRecipient($packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT], $this->getListInstance());
+ $recipientInstance->resolveRecipient($packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT], $this->getListInstance(), $packageData);
} catch (FrameworkException $e) {
// Could not find class, what ever failed
$this->debugInstance($e->getMessage());
/**
* Tries to resolve given recipient into session ids or ip:port combination
- * depending on implementation (hint: Template Method Pattern)
+ * depending on implementation (hint: Template Method Pattern). This
+ * implementation will add more than one recipient to the list as a DHT is
+ * distributed and the package might go to more than one recipient.
*
* @param $recipient Recipient to resolve (e.g. could be a virtual recipient or direct session id)
* @param $listInstance An instance of a Listable class
- * @return $resolved Resolved recipient or VOID if only the set list has been filled
+ * @param $packageData Valid package data array
+ * @return void
* @throws FrameworkException Could throw different exceptions depending on implementation
* @todo 0% done
*/
- public function resolveRecipient ($recipient, Listable $listInstance) {
+ public function resolveRecipient ($recipient, Listable $listInstance, array $packageData) {
// Make sure the recipient is valid
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DHT-RECIPIENT: recipient=' . $recipient);
assert($recipient == NetworkPackage::NETWORK_TARGET_DHT);
+
+ // Get recipient discovery instance
+ $discoverInstance = ObjectFactory::createObjectByConfiguredName('dht_recipient_discovery_class');
+
+ // "Discover" recipients by given package data
+ $recipients = $discoverInstance->resolveRecipientsByPackageData($packageData);
+
$this->partialStub('Please implement this method. recipient=' . $recipient);
}
}
*
* @param $recipient Recipient to resolve (e.g. could be a virtual recipient or direct session id)
* @param $listInstance An instance of a Listable class
+ * @param $packageData Valid package data array
* @return $resolved Resolved recipient or VOID if only the set list has been filled
* @throws FrameworkException Could throw different exceptions depending on implementation
*/
- public function resolveRecipient ($recipient, Listable $listInstance = NULL) {
+ public function resolveRecipient ($recipient, Listable $listInstance, array $packageData) {
// Debug message
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DIRECT-RECIPIENT: recipient=' . $recipient);
*
* @param $recipient Recipient to resolve (e.g. could be a virtual recipient or direct session id)
* @param $listInstance An instance of a Listable class
+ * @param $packageData Valid package data array
* @return $resolved Resolved recipient or VOID if only the set list has been filled
* @throws FrameworkException Could throw different exceptions depending on implementation
*/
- public function resolveRecipient ($recipient, Listable $listInstance) {
+ public function resolveRecipient ($recipient, Listable $listInstance, array $packageData) {
// Make sure the recipient is valid
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SELF-RECIPIENT: recipient=' . $recipient);
assert($recipient == NetworkPackage::NETWORK_TARGET_SELF);
*
* @param $recipient Recipient to resolve (e.g. could be a virtual recipient or direct session id)
* @param $listInstance An instance of a Listable class
+ * @param $packageData Valid package data array
* @return $resolved Resolved recipient or VOID if only the set list has been filled
* @throws FrameworkException Could throw different exceptions depending on implementation
*/
- public function resolveRecipient ($recipient, Listable $listInstance) {
+ public function resolveRecipient ($recipient, Listable $listInstance, array $packageData) {
// Make sure the recipient is valid
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('UPPER-RECIPIENT: recipient=' . $recipient);
assert($recipient == NetworkPackage::NETWORK_TARGET_UPPER);