2020
2121final class Queue implements QueueInterface
2222{
23- /**
24- * @var mixed[] Queue-specific middleware definitions.
25- */
26- private array $ middlewareDefinitions ;
27-
2823 private string $ name ;
2924
3025 /**
31- * @var PushMiddlewareDispatcher The dispatcher used for push messages, combining base dispatcher middleware with
32- * queue-specific middleware.
26+ * @var PushMiddlewareDispatcher The dispatcher used for push messages, combining common middleware from
27+ * {@see PushMiddlewareConfig} with queue-specific middleware.
3328 */
3429 private PushMiddlewareDispatcher $ dispatcher ;
3530
36- /**
37- * @var PushMiddlewareDispatcher The base dispatcher built from {@see PushMiddlewareConfig}.
38- * Holds the common middleware applied to all queues.
39- */
40- private PushMiddlewareDispatcher $ baseDispatcher ;
41-
4231 /**
4332 * @param WorkerInterface $worker The worker that processes messages.
4433 * @param LoopInterface $loop The loop for controlling message processing.
@@ -59,19 +48,16 @@ public function __construct(
5948 mixed ...$ middlewareDefinitions ,
6049 ) {
6150 $ this ->name = StringNormalizer::normalize ($ name );
62- $ this ->baseDispatcher = new PushMiddlewareDispatcher (
51+ $ this ->dispatcher = ( new PushMiddlewareDispatcher (
6352 $ middlewareConfig ->middlewareFactory ,
6453 $ middlewareConfig ->commonMiddlewareDefinitions ,
6554 $ this ->createFinalPushHandler (),
66- );
67- $ this ->setMiddlewaresAndPrepareDispatcher ($ middlewareDefinitions );
55+ ))->withMiddlewaresAdded ($ middlewareDefinitions );
6856 }
6957
7058 public function __clone ()
7159 {
72- $ finalPushHandler = $ this ->createFinalPushHandler ();
73- $ this ->baseDispatcher = $ this ->baseDispatcher ->withFinishHandler ($ finalPushHandler );
74- $ this ->dispatcher = $ this ->dispatcher ->withFinishHandler ($ finalPushHandler );
60+ $ this ->dispatcher = $ this ->dispatcher ->withFinishHandler ($ this ->createFinalPushHandler ());
7561 }
7662
7763 public function getName (): string
@@ -164,29 +150,6 @@ public function status(string|int $id): MessageStatus
164150 return $ this ->adapter ->status ($ id );
165151 }
166152
167- public function withMiddlewares (mixed ...$ middlewareDefinitions ): self
168- {
169- $ instance = clone $ this ;
170- $ instance ->setMiddlewaresAndPrepareDispatcher ($ middlewareDefinitions );
171- return $ instance ;
172- }
173-
174- public function withMiddlewaresAdded (mixed ...$ middlewareDefinitions ): self
175- {
176- $ instance = clone $ this ;
177- $ instance ->setMiddlewaresAndPrepareDispatcher ([...array_values ($ instance ->middlewareDefinitions ), ...array_values ($ middlewareDefinitions )]);
178- return $ instance ;
179- }
180-
181- /**
182- * @param mixed[] $middlewareDefinitions
183- */
184- private function setMiddlewaresAndPrepareDispatcher (array $ middlewareDefinitions ): void
185- {
186- $ this ->middlewareDefinitions = $ middlewareDefinitions ;
187- $ this ->dispatcher = $ this ->baseDispatcher ->withMiddlewaresAdded ($ middlewareDefinitions );
188- }
189-
190153 private function handle (MessageInterface $ message ): bool
191154 {
192155 $ this ->worker ->process ($ message , $ this );
0 commit comments