<?php namespace Xentral\Modules\Hubspot\Scheduler; use ArrayObject; use Xentral\Modules\Hubspot\RequestQueues\HubspotRequestQueuesService; use Xentral\Modules\SubscriptionCycle\Scheduler\TaskMutexServiceInterface; final class HubspotProcessSchedulerTask implements HubspotSchedulerTaskInterface { const CALL_TYPE = 'hubspot'; /** @var HubspotRequestQueuesService $gateway */ private $service; /** @var TaskMutexServiceInterface $taskMutexService */ private $taskMutexService; /** * @param HubspotRequestQueuesService $service * @param TaskMutexServiceInterface $taskMutexService */ public function __construct(HubspotRequestQueuesService $service, TaskMutexServiceInterface $taskMutexService) { $this->service = $service; $this->taskMutexService = $taskMutexService; } /** * @return void */ public function execute() { if ($this->taskMutexService->isTaskInstanceRunning('hubspot_process')) { return; } $this->taskMutexService->setMutex('hubspot_process'); $this->service->execute(static::CALL_TYPE); } /** * @return void */ public function cleanup() { $this->taskMutexService->setMutex('hubspot_process', false); $this->service->cleanup(); } /** * @param ArrayObject $args * * @return void */ public function beforeScheduleAction(ArrayObject $args) { // TODO: Implement beforeScheduleAction() method. } /** * @param ArrayObject $args * * @return void */ public function afterScheduleAction(ArrayObject $args) { // TODO: Implement afterScheduleAction() method. } }