Переглянути джерело

Fixed #76. Created Abstract class and replaced

Marc 11 роки тому
батько
коміт
925f23434b

+ 39 - 0
Dispatcher/Abstracts/AbstractGearmanDispatcher.php

@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * Gearman Bundle for Symfony2
+ * 
+ * @author Marc Morera <yuhu@mmoreram.com>
+ * @since 2013
+ */
+
+namespace Mmoreram\GearmanBundle\Dispatcher\Abstracts;
+
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+
+/**
+ * Gearman execute methods. All Worker methods
+ *
+ * @author Marc Morera <yuhu@mmoreram.com>
+ */
+abstract class AbstractGearmanDispatcher
+{
+
+    /**
+     * @var EventDispatcherInterface
+     *
+     * Event dispatcher
+     */
+    protected $eventDispatcher;
+
+
+    /**
+     * Construct method
+     *
+     * @param EventDispatcherInterface $eventDispatcher Event dispatcher
+     */
+    public function __construct(EventDispatcherInterface $eventDispatcher)
+    {
+        $this->eventDispatcher = $eventDispatcher;
+    }
+}

+ 3 - 22
Service/GearmanCallbacks.php

@@ -7,11 +7,11 @@
  * @since 2013
  */
 
-namespace Mmoreram\GearmanBundle\Service;
+namespace Mmoreram\GearmanBundle\Dispatcher;
 
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 use GearmanTask;
 
+use Mmoreram\GearmanBundle\Dispatcher\Abstracts\AbstractGearmanDispatcher;
 use Mmoreram\GearmanBundle\GearmanEvents;
 use Mmoreram\GearmanBundle\Event\GearmanClientCallbackCompleteEvent;
 use Mmoreram\GearmanBundle\Event\GearmanClientCallbackFailEvent;
@@ -27,28 +27,9 @@ use Mmoreram\GearmanBundle\Event\GearmanClientCallbackWorkloadEvent;
  *
  * @author Marc Morera <yuhu@mmoreram.com>
  */
-class GearmanCallbacks
+class GearmanCallbacksDispatcher extends AbstractGearmanDispatcher
 {
 
-    /**
-     * @var EventDispatcherInterface
-     *
-     * Event dispatcher
-     */
-    private $eventDispatcher;
-
-
-    /**
-     * Construct method
-     *
-     * @param EventDispatcherInterface $eventDispatcher Event dispatcher
-     */
-    public function __construct(EventDispatcherInterface $eventDispatcher)
-    {
-        $this->eventDispatcher = $eventDispatcher;
-    }
-
-
     /**
      * Assign all GearmanClient callbacks as Symfony2 events
      *

+ 5 - 0
Resources/config/parameters.yml

@@ -10,6 +10,11 @@ parameters:
     #
     gearman.unique_job_identifier.class: Mmoreram\GearmanBundle\Generator\UniqueJobIdentifierGenerator
 
+    #
+    # Dispatchers
+    #
+    gearman.dispatcher.callbacks.class: Mmoreram\GearmanBundle\Dispatcher\GearmanCallbacksDispatcher
+
     #
     # Services
     #

+ 13 - 6
Resources/config/services.yml

@@ -19,6 +19,18 @@ services:
         arguments:
             generate_unique_key: %gearman.default.settings.generate_unique_key%
 
+    #
+    # Dispatchers
+    #
+    gearman.dispatcher.abstract:
+        abstract: true
+        arguments:
+            event.dispatcher: @event_dispatcher
+
+    gearman.dispatcher.callbacks:
+        parent: gearman.dispatcher.abstract
+        class: %gearman.dispatcher.callbacks.class%
+
     #
     # Services
     #
@@ -49,11 +61,6 @@ services:
         arguments:
             kernel: @kernel
 
-    gearman.callbacks:
-        class: %gearman.callbacks.class%
-        arguments:
-            event.dispatcher: @event_dispatcher
-
     gearman.abstract.service:
         abstract:  true
         arguments:
@@ -72,6 +79,6 @@ services:
         calls:
             - [initTaskStructure, []]
             - [setDefaultServers, [%gearman.servers%]]
-            - [setGearmanCallbacks, [@gearman.callbacks]]
+            - [setGearmanCallbacksDispatcher, [@gearman.dispatcher.callbacks]]
             - [setUniqueJobIdentifierGenerator, [@gearman.unique_job_identifier]]
             - [setDefaultSettings, [%gearman.default.settings%]]

+ 9 - 7
Service/GearmanClient.php

@@ -13,6 +13,7 @@ use Mmoreram\GearmanBundle\Service\Abstracts\AbstractGearmanService;
 use Mmoreram\GearmanBundle\GearmanMethods;
 use Mmoreram\GearmanBundle\Module\JobStatus;
 use Mmoreram\GearmanBundle\Generator\UniqueJobIdentifierGenerator;
+use Mmoreram\GearmanBundle\Dispatcher\GearmanCallbacksDispatcher;
 
 /**
  * GearmanClient. Implementation of AbstractGearmanService
@@ -21,11 +22,11 @@ class GearmanClient extends AbstractGearmanService
 {
 
     /**
-     * @var GearmanCallbacks
+     * @var GearmanCallbacksDispatcher
      *
-     * Gearman callbacks
+     * Gearman callbacks dispatcher
      */
-    protected $gearmanCallbacks;
+    protected $gearmanCallbacksDisparcher;
 
 
     /**
@@ -113,13 +114,13 @@ class GearmanClient extends AbstractGearmanService
     /**
      * Set gearman callbacks
      *
-     * @param GearmanCallbacks $gearmanCallbacks Gearman callbacks
+     * @param GearmanCallbacksDispatcher $gearmanCallbacksDispatcher Gearman callbacks dispatcher
      *
      * @return GearmanClient self Object
      */
-    public function setGearmanCallbacks(GearmanCallbacks $gearmanCallbacks)
+    public function setGearmanCallbacksDispatcher(GearmanCallbacksDispatcher $gearmanCallbacksDispatcher)
     {
-        $this->gearmanCallbacks = $gearmanCallbacks;
+        $this->gearmanCallbacksDispatcher = $gearmanCallbacksDispatcher;
 
         return $this;
     }
@@ -608,7 +609,8 @@ class GearmanClient extends AbstractGearmanService
         $this->assignServers($gearmanClient);
 
         if ($this->settings['callbacks']) {
-            $this->gearmanCallbacks->assignTaskCallbacks($gearmanClient);
+
+            $this->gearmanCallbacksDispatcher->assignTaskCallbacks($gearmanClient);
         }
 
         foreach ($this->taskStructure as $task) {

+ 2 - 2
Tests/Module/WorkerClassTest.php

@@ -102,7 +102,7 @@ class WorkerClassTest extends \PHPUnit_Framework_TestCase
     public function setUp()
     {
 
-        $this->reflectionClass = $this  
+        $this->reflectionClass = $this
             ->getMockBuilder('\ReflectionClass')
             ->disableOriginalConstructor()
             ->setMethods(array(
@@ -118,7 +118,7 @@ class WorkerClassTest extends \PHPUnit_Framework_TestCase
             ->disableOriginalConstructor()
             ->getMock();
 
-        $this->reader = $this   
+        $this->reader = $this
             ->getMockBuilder('Doctrine\Common\Annotations\SimpleAnnotationReader')
             ->disableOriginalConstructor()
             ->setMethods(array(