X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=application%2Fhub%2Fmain%2Fproducer%2Fcruncher%2Fwork_units%2Fclass_CruncherTestUnitProducer.php;h=b0ca550afddd0d6e4a7f476c0cabd6bd529e2fa4;hb=c13ca7c93ee55b02d1d3320fca5d2d8d6e953768;hp=d12697a24b8264f2362e0c8eb1da6226234d0a7d;hpb=d5598a16aba413db79b4e319cfabfb62da29d364;p=hub.git diff --git a/application/hub/main/producer/cruncher/work_units/class_CruncherTestUnitProducer.php b/application/hub/main/producer/cruncher/work_units/class_CruncherTestUnitProducer.php index d12697a24..b0ca550af 100644 --- a/application/hub/main/producer/cruncher/work_units/class_CruncherTestUnitProducer.php +++ b/application/hub/main/producer/cruncher/work_units/class_CruncherTestUnitProducer.php @@ -4,7 +4,7 @@ * * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Hub Developer Team + * @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 * @@ -21,7 +21,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -class CruncherTestUnitProducer extends BaseProducer implements UnitProducer, Registerable { +class CruncherTestUnitProducer extends BaseUnitProducer implements UnitProducer, Registerable { /** * Protected constructor * @@ -41,6 +41,12 @@ class CruncherTestUnitProducer extends BaseProducer implements UnitProducer, Reg // Get new instance $producerInstance = new CruncherTestUnitProducer(); + // Test units have a helper class that wraps the source + $helperInstance = ObjectFactory::createObjectByConfiguredName('crypto_random_message_helper_class', array('test')); + + // So set it in the producer + $producerInstance->setHelperInstance($helperInstance); + // Return the prepared instance return $producerInstance; } @@ -66,13 +72,48 @@ class CruncherTestUnitProducer extends BaseProducer implements UnitProducer, Reg } /** - * Produces some test units and pushes them onto the queue + * Prepares the produces of some test units and pushes them onto the queue * + * @param $stateInstance An instance of a Stateable instance * @return void - * @todo 0% done + * @todo ~60% done */ - public function produceUnits () { - $this->partialStub('Please implement this method.'); + public function prepareUnitProduction (Stateable $stateInstance) { + // First get a database wrapper because we want to permanently store test units + $wrapperInstance = ObjectFactory::createObjectByConfiguredName('cruncher_unit_db_wrapper_class'); + + // Now get a search instance + $searchInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class'); + + // Add criteria for looking up already created and available test units + $searchInstance->addCriteria(CruncherUnitDatabaseWrapper::DB_COLUMN_UNIT_TYPE , BaseUnitProducer::UNIT_TYPE_TEST_UNIT); + $searchInstance->addCriteria(CruncherUnitDatabaseWrapper::DB_COLUMN_UNIT_STATUS, BaseUnitProducer::UNIT_STATUS_AVAILABLE); + $searchInstance->setConfiguredLimit('cruncher_test_unit_max_count'); + + // Search for our units + $resultInstance = $wrapperInstance->doSelectByCriteria($searchInstance); + + // Do we have some entries? + if ($resultInstance->next()) { + // Entries found + // @TODO Unfinished work here + $this->debugInstance(); + + // The state must be changed because ... + $stateInstance->someFooStateChange(); + } else { + // Get an encrypted, random message from our source + $encryptedMessage = $this->getHelperInstance()->generateRandomMessage(); + + // Debug message + $this->debugOutput('PRODUCER: An encrypted, random message has been generated. Generating keys ...'); + + // Set the encrypted message in the template instance + $this->getTemplateInstance()->assignVariable('encrypted_message', $encryptedMessage); + + // The state must be changed because we have a new message + $stateInstance->encryptedMessageGenerated(); + } } }