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]); }
/** * @param Payload $payload * * @return array */ public function toArray(Payload $payload) { return ['name' => $payload->getName(), 'arguments' => $payload->getArguments(), 'attributes' => $payload->getAttributes()]; }