X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=application%2Fhub%2Fmain%2Ffilter%2Ftask%2Fnode%2Fclass_NodeTaskHandlerInitializerFilter.php;h=abc35dc35ab6f938f233f07366867b6651bbae7c;hb=97eb9507f2d0fdcd7668009b349ea622374fb972;hp=5fb366c881249930d08ed3b0b573d3c1bd5b3a03;hpb=3e5e829a9284c30b1a24b720f9c43a68d920d973;p=hub.git diff --git a/application/hub/main/filter/task/node/class_NodeTaskHandlerInitializerFilter.php b/application/hub/main/filter/task/node/class_NodeTaskHandlerInitializerFilter.php index 5fb366c88..abc35dc35 100644 --- a/application/hub/main/filter/task/node/class_NodeTaskHandlerInitializerFilter.php +++ b/application/hub/main/filter/task/node/class_NodeTaskHandlerInitializerFilter.php @@ -4,7 +4,7 @@ * * @author Roland Haeder * @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.shipsimu.org * @@ -51,27 +51,24 @@ class NodeTaskHandlerInitializerFilter extends BaseNodeFilter implements Filtera * @param $requestInstance An instance of a class with an Requestable interface * @param $responseInstance An instance of a class with an Responseable interface * @return void - * @throws FilterChainException If we need to interrupt the filter chain + * @throws FilterChainException If the filter chain needs to be interrupted * @todo Maybe some more tasks needs to be added? */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Get node instance - $nodeInstance = Registry::getRegistry()->getInstance('node'); + $nodeInstance = NodeObjectFactory::createNodeInstance(); // Get a new task handler instance $handlerInstance = ObjectFactory::createObjectByConfiguredName('task_handler_class'); - // Generate socket listener task - $taskInstance = ObjectFactory::createObjectByConfiguredName('node_socket_listener_task_class'); - - // Network package reader, needs to be delayed a little - $handlerInstance->registerTask('socket_listener', $taskInstance); + // Put the task handler in registry + Registry::getRegistry()->addInstance('task_handler', $handlerInstance); - // Generate package reader task - $taskInstance = ObjectFactory::createObjectByConfiguredName('node_package_reader_task_class', array($nodeInstance->getListenerPoolInstance())); + // Prepare a package-tags initialization task for the listeners + $taskInstance = ObjectFactory::createObjectByConfiguredName('node_package_tags_init_task_class'); - // Network package reader, needs to be delayed a little - $handlerInstance->registerTask('network_package_reader', $taskInstance); + // Register it + $handlerInstance->registerTask('package_tags_init', $taskInstance); // Generate package writer task $taskInstance = ObjectFactory::createObjectByConfiguredName('node_package_writer_task_class'); @@ -79,11 +76,17 @@ class NodeTaskHandlerInitializerFilter extends BaseNodeFilter implements Filtera // Register it as well $handlerInstance->registerTask('network_package_writer', $taskInstance); - // Generate chunk assembler task - $taskInstance = ObjectFactory::createObjectByConfiguredName('node_chunk_assembler_task_class'); + // Generate package reader task + $taskInstance = ObjectFactory::createObjectByConfiguredName('node_package_reader_task_class', array($nodeInstance->getListenerPoolInstance())); - // Register it as well - $handlerInstance->registerTask('chunk_assembler', $taskInstance); + // Network package reader, needs to be delayed a little + $handlerInstance->registerTask('network_package_reader', $taskInstance); + + // Generate socket listener task + $taskInstance = ObjectFactory::createObjectByConfiguredName('node_socket_listener_task_class'); + + // Network package reader, needs to be delayed a little + $handlerInstance->registerTask('socket_listener', $taskInstance); // Generate package decoder task $taskInstance = ObjectFactory::createObjectByConfiguredName('node_package_decoder_task_class'); @@ -91,6 +94,12 @@ class NodeTaskHandlerInitializerFilter extends BaseNodeFilter implements Filtera // Register it as well $handlerInstance->registerTask('package_decoder', $taskInstance); + // Generate chunk assembler task + $taskInstance = ObjectFactory::createObjectByConfiguredName('node_chunk_assembler_task_class'); + + // Register it as well + $handlerInstance->registerTask('chunk_assembler', $taskInstance); + // Generate DHT initialization task $taskInstance = ObjectFactory::createObjectByConfiguredName('node_dht_init_task_class'); @@ -103,11 +112,17 @@ class NodeTaskHandlerInitializerFilter extends BaseNodeFilter implements Filtera // Register it as well $handlerInstance->registerTask('dht_query', $taskInstance); - // Prepare a package-tags initialization task for the listeners - $taskInstance = ObjectFactory::createObjectByConfiguredName('node_package_tags_init_task_class'); + // Generate DHT publication-check task + $taskInstance = ObjectFactory::createObjectByConfiguredName('node_dht_publication_check_task_class'); - // Register it - $handlerInstance->registerTask('package_tags_init', $taskInstance); + // Register it as well + $handlerInstance->registerTask('dht_check_publication', $taskInstance); + + // Generate DHT publication task + $taskInstance = ObjectFactory::createObjectByConfiguredName('node_dht_publication_task_class'); + + // Register it as well + $handlerInstance->registerTask('dht_publication', $taskInstance); // Prepare a self-test task for the listeners $taskInstance = ObjectFactory::createObjectByConfiguredName('node_selfconnect_task_class'); @@ -130,8 +145,12 @@ class NodeTaskHandlerInitializerFilter extends BaseNodeFilter implements Filtera // Register it $handlerInstance->registerTask('ping', $taskInstance); - // Put the task handler in registry - Registry::getRegistry()->addInstance('task_handler', $handlerInstance); + /* + * Allow extra node-depending tasks, e.g. the bootstrapper node needs + * booting its DHT. DHTs are decentralized and are working on + * peer-to-peer basis. + */ + $nodeInstance->addExtraTasks($handlerInstance); } }