/**
* @param AbstractJob|Job $job
*
* @throws ResultException
*/
protected function doJob(AbstractJob $job)
{
$job->addDebugData('event', 'workerDoJob');
// generate getter config =====================================================
$job->addDebugData('getConfig', static::getConfig());
$job->addDebugData('getConfigSuperKey', static::getConfig('superKey'));
// generate response ==========================================================
$sleep = $job->getSleep() ?: 0;
$job->addDebugData('event', "before sleep {$sleep} / time: " . time());
sleep($sleep);
$job->addDebugData('event', "after sleep {$sleep} / time: " . time());
$response = ['uniqid' => uniqid()];
$job->addDebugData('response', $response);
$resultData = $response;
// generate new ResultException ===============================================
$expectedResult = $job->getExpectedResult();
$job->addDebugData('expect', $expectedResult);
$job->addDebugData('event', "now will get ResultException ...");
if ($expectedResult === Job::P_PARAM_EXPECTED_RESULT_T_SUCCESS) {
$job->addDebugData('throw', "code " . ResultException::R_SUCCESS);
throw new ResultException(ResultException::R_SUCCESS, $resultData);
}
if ($expectedResult === Job::P_PARAM_EXPECTED_RESULT_T_FAILURE) {
$job->addDebugData('throw', "code " . ResultException::FAILURE_XXX);
throw new ResultException(ResultException::FAILURE_XXX);
}
if ($expectedResult === Job::P_PARAM_EXPECTED_RESULT_T_ERROR) {
$job->addDebugData('throw', "code " . ResultException::ERROR_XXX);
throw new ResultException(ResultException::ERROR_XXX, $resultData);
}
if ($expectedResult === Job::P_PARAM_EXPECTED_RESULT_T_RETRY) {
$newWorkerClass = $job->getWorkerClass();
$job->setWorkerClass($newWorkerClass)->save();
$job->addDebugData('setWorkerClass', $newWorkerClass);
$job->addDebugData('throw', "code " . ResultException::RETRY_XXX);
throw new ResultException(ResultException::RETRY_XXX, $resultData);
}
if ($expectedResult === Job::P_PARAM_EXPECTED_RESULT_T_REDIRECT) {
$newWorkerClass = $job->getWorkerClass();
$job->setWorkerClass($newWorkerClass)->save();
$job->addDebugData('setWorkerClass', $newWorkerClass);
$job->addDebugData('throw', "code " . ResultException::REDIRECT_XXX);
throw new ResultException(ResultException::REDIRECT_XXX, $resultData);
}
$job->addDebugData('throw', "code " . ResultException::ERROR_PARAM_EXPECTED_RESULT);
throw new ResultException(ResultException::ERROR_PARAM_EXPECTED_RESULT, $resultData);
}