Skip to content

Commit

Permalink
BC layer symfony/event-dispatcher (#201)
Browse files Browse the repository at this point in the history
* Added layer to prevent deprecation notices for the sub 4.4 event dispatcher signature.
  • Loading branch information
ro0NL authored Nov 16, 2021
1 parent 6d65f25 commit 8acdec8
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 31 deletions.
61 changes: 37 additions & 24 deletions Dispatcher/GearmanCallbacksDispatcher.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
use Mmoreram\GearmanBundle\Event\GearmanClientCallbackWarningEvent;
use Mmoreram\GearmanBundle\Event\GearmanClientCallbackWorkloadEvent;
use Mmoreram\GearmanBundle\GearmanEvents;
use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy;

/**
* Gearman callbacks
Expand Down Expand Up @@ -96,9 +97,9 @@ public function assignCompleteCallback(GearmanTask $gearmanTask, $contextReferen
if (!is_null($contextReference)) {
$event->setContext($contextReference);
}
$this->eventDispatcher->dispatch(
GearmanEvents::GEARMAN_CLIENT_CALLBACK_COMPLETE,
$event
$this->dispatch(
$event,
GearmanEvents::GEARMAN_CLIENT_CALLBACK_COMPLETE
);
}

Expand All @@ -112,9 +113,9 @@ public function assignCompleteCallback(GearmanTask $gearmanTask, $contextReferen
public function assignFailCallback(GearmanTask $gearmanTask)
{
$event = new GearmanClientCallbackFailEvent($gearmanTask);
$this->eventDispatcher->dispatch(
GearmanEvents::GEARMAN_CLIENT_CALLBACK_FAIL,
$event
$this->dispatch(
$event,
GearmanEvents::GEARMAN_CLIENT_CALLBACK_FAIL
);
}

Expand All @@ -128,9 +129,9 @@ public function assignFailCallback(GearmanTask $gearmanTask)
public function assignDataCallback(GearmanTask $gearmanTask)
{
$event = new GearmanClientCallbackDataEvent($gearmanTask);
$this->eventDispatcher->dispatch(
GearmanEvents::GEARMAN_CLIENT_CALLBACK_DATA,
$event
$this->dispatch(
$event,
GearmanEvents::GEARMAN_CLIENT_CALLBACK_DATA
);
}

Expand All @@ -144,9 +145,9 @@ public function assignDataCallback(GearmanTask $gearmanTask)
public function assignCreatedCallback(GearmanTask $gearmanTask)
{
$event = new GearmanClientCallbackCreatedEvent($gearmanTask);
$this->eventDispatcher->dispatch(
GearmanEvents::GEARMAN_CLIENT_CALLBACK_CREATED,
$event
$this->dispatch(
$event,
GearmanEvents::GEARMAN_CLIENT_CALLBACK_CREATED
);
}

Expand All @@ -158,9 +159,9 @@ public function assignCreatedCallback(GearmanTask $gearmanTask)
public function assignExceptionCallback(GearmanTask $gearmanTask)
{
$event = new GearmanClientCallbackExceptionEvent($gearmanTask);
$this->eventDispatcher->dispatch(
GearmanEvents::GEARMAN_CLIENT_CALLBACK_EXCEPTION,
$event
$this->dispatch(
$event,
GearmanEvents::GEARMAN_CLIENT_CALLBACK_EXCEPTION
);
}

Expand All @@ -174,9 +175,9 @@ public function assignExceptionCallback(GearmanTask $gearmanTask)
public function assignStatusCallback(GearmanTask $gearmanTask)
{
$event = new GearmanClientCallbackStatusEvent($gearmanTask);
$this->eventDispatcher->dispatch(
GearmanEvents::GEARMAN_CLIENT_CALLBACK_STATUS,
$event
$this->dispatch(
$event,
GearmanEvents::GEARMAN_CLIENT_CALLBACK_STATUS
);
}

Expand All @@ -190,9 +191,9 @@ public function assignStatusCallback(GearmanTask $gearmanTask)
public function assignWarningCallback(GearmanTask $gearmanTask)
{
$event = new GearmanClientCallbackWarningEvent($gearmanTask);
$this->eventDispatcher->dispatch(
GearmanEvents::GEARMAN_CLIENT_CALLBACK_WARNING,
$event
$this->dispatch(
$event,
GearmanEvents::GEARMAN_CLIENT_CALLBACK_WARNING
);
}

Expand All @@ -206,9 +207,21 @@ public function assignWarningCallback(GearmanTask $gearmanTask)
public function assignWorkloadCallback(GearmanTask $gearmanTask)
{
$event = new GearmanClientCallbackWorkloadEvent($gearmanTask);
$this->eventDispatcher->dispatch(
GearmanEvents::GEARMAN_CLIENT_CALLBACK_WORKLOAD,
$event
$this->dispatch(
$event,
GearmanEvents::GEARMAN_CLIENT_CALLBACK_WORKLOAD
);
}

private function dispatch($event, $eventName)
{
// LegacyEventDispatcherProxy exists in Symfony >= 4.3
if (class_exists(LegacyEventDispatcherProxy::class)) {
// New Symfony 4.3 EventDispatcher signature
$this->eventDispatcher->dispatch($event, $eventName);
} else {
// Old EventDispatcher signature
$this->eventDispatcher->dispatch($eventName, $event);
}
}
}
1 change: 0 additions & 1 deletion Event/Abstracts/AbstractGearmanClientTaskEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
namespace Mmoreram\GearmanBundle\Event\Abstracts;

use GearmanTask;
use Symfony\Component\EventDispatcher\Event;

/**
* AbstractGearmanClientTaskEvent
Expand Down
34 changes: 34 additions & 0 deletions Event/Abstracts/Event.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php

/**
* Gearman Bundle for Symfony2
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* Feel free to edit as you please, and have fun.
*
* @author Marc Morera <yuhu@mmoreram.com>
*/

namespace Mmoreram\GearmanBundle\Event\Abstracts;

use Symfony\Component\EventDispatcher\Event as BaseEventDeprecated;
use Symfony\Contracts\EventDispatcher\Event as BaseEvent;

// Symfony 4.3 BC layer
if (class_exists(BaseEvent::class)) {
/**
* @internal
*/
abstract class Event extends BaseEvent
{
}
} else {
/**
* @internal
*/
abstract class Event extends BaseEventDeprecated
{
}
}
2 changes: 1 addition & 1 deletion Event/GearmanWorkExecutedEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

namespace Mmoreram\GearmanBundle\Event;

use Symfony\Component\EventDispatcher\Event;
use Mmoreram\GearmanBundle\Event\Abstracts\Event;

/**
* GearmanWorkExecutedEvent
Expand Down
2 changes: 1 addition & 1 deletion Event/GearmanWorkStartingEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

namespace Mmoreram\GearmanBundle\Event;

use Symfony\Component\EventDispatcher\Event;
use Mmoreram\GearmanBundle\Event\Abstracts\Event;

/**
* GearmanWorkStartingEvent
Expand Down
20 changes: 16 additions & 4 deletions Service/GearmanExecute.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;

use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy;
use Mmoreram\GearmanBundle\Command\Util\GearmanOutputAwareInterface;
use Mmoreram\GearmanBundle\Event\GearmanWorkExecutedEvent;
use Mmoreram\GearmanBundle\Event\GearmanWorkStartingEvent;
Expand Down Expand Up @@ -140,7 +140,7 @@ public function setContainer(ContainerInterface $container)
*/
public function setEventDispatcher(EventDispatcherInterface $eventDispatcher)
{
$this->eventDispatcher = $eventDispatcher;
$this->eventDispatcher = class_exists(LegacyEventDispatcherProxy::class) ? LegacyEventDispatcherProxy::decorate($eventDispatcher) : $eventDispatcher;

return $this;
}
Expand Down Expand Up @@ -341,7 +341,7 @@ private function runJob(\GearmanWorker $gearmanWorker, $objInstance, array $jobs
$iterations--;

$event = new GearmanWorkExecutedEvent($jobs, $iterations, $gearmanWorker->returnCode());
$this->eventDispatcher->dispatch(GearmanEvents::GEARMAN_WORK_EXECUTED, $event);
$this->dispatch($event, GearmanEvents::GEARMAN_WORK_EXECUTED);

if ($gearmanWorker->returnCode() != GEARMAN_SUCCESS) {

Expand Down Expand Up @@ -434,7 +434,7 @@ public function handleJob(\GearmanJob $job)
}

$event = new GearmanWorkStartingEvent($context['jobs']);
$this->eventDispatcher->dispatch(GearmanEvents::GEARMAN_WORK_STARTING, $event);
$this->dispatch($event, GearmanEvents::GEARMAN_WORK_STARTING);

$result = call_user_func_array(
array($context['job_object_instance'], $context['job_method']),
Expand All @@ -450,4 +450,16 @@ public function handleJob(\GearmanJob $job)

return $result;
}

private function dispatch($event, $eventName)
{
// LegacyEventDispatcherProxy exists in Symfony >= 4.3
if (class_exists(LegacyEventDispatcherProxy::class)) {
// New Symfony 4.3 EventDispatcher signature
$this->eventDispatcher->dispatch($event, $eventName);
} else {
// Old EventDispatcher signature
$this->eventDispatcher->dispatch($eventName, $event);
}
}
}

0 comments on commit 8acdec8

Please sign in to comment.