public function onKnownPayloadReceived($plugin, Payload $payload, $is_known)
 {
     /** @var TasksPool $tasks_pool */
     $tasks_pool = $this->container['parsley.tasks_pool'];
     $task_name = $payload->getName();
     $task = $tasks_pool->get($task_name);
     $args = Caller::unpackArguments($payload->getArguments(), $task->getArgumentsOrder());
     // TODO: event + subscriber
     // $task->before($payload, $args);
     $this->fireSegmentEvent('before.payload.handling: ' . $task_name, [$payload, $args, $task]);
     $exception = null;
     $result = null;
     try {
         // TODO: event + subscriber
         $result = Caller::call($task, 'callback', $args);
     } catch (\Exception $e) {
         $exception = $e;
     }
     if ($exception) {
         // TODO: event + subscriber
         // $task->failure($exception, $args, $payload);
         $this->fireSegmentEvent('failed.payload.handling: ' . $task_name, [$payload, $exception, $args, $task]);
     } else {
         // TODO: event + subscriber
         //$task->after($result, $args, $payload);
         $this->fireSegmentEvent('successful.payload.handling: ' . $task_name, [$payload, $result, $args, $task]);
     }
     // TODO: event + subscriber
     // $task->always($result, $args, $payload, $exception);
     $this->fireSegmentEvent('done.payload.handling: ' . $task_name, [$payload, $exception, $result, $args, $task]);
 }
Example #2
0
 /**
  * @param \Parsley\Core\Task $task
  * @param string             $method
  * @param array              $arguments
  * @param \Exception         $exception
  *
  * @return mixed|null
  * @throws \Exception
  */
 protected function notifyTask($task, $method, array $arguments, $exception = null)
 {
     if (is_callable([$task, $method])) {
         return Caller::call($task, $method, $arguments);
     } elseif ($exception) {
         throw $exception;
     }
     return null;
 }
Example #3
0
 /**
  * @param \Parsley\Core\Payload $payload
  * @param string                $method
  * @param array                 $arguments
  * @param \Exception            $exception
  *
  * @return mixed|null
  * @throws \Exception
  */
 protected function notifyParent($payload, $method, array $arguments, $exception = null)
 {
     if (!$this->hasGroup($payload)) {
         return null;
     }
     $group = $this->getGroupTask($payload);
     $group_id = $this->getGroupId($payload);
     $arguments[] = $group_id;
     if (is_callable([$group, $method])) {
         return Caller::call($group, $method, $arguments);
     } elseif ($exception) {
         throw $exception;
     }
     return null;
 }
Example #4
0
 public function fromTask(Task $task)
 {
     $arguments = Caller::packArguments($task->getArguments(), $task->getArgumentsOrder());
     $properties = new Properties($task->getDefaultProperties());
     return new Payload($task->getName(), $arguments, $properties);
 }