public function enqueue(Rpc $rpc) { if ($this->memory->count() < $this->threshold) { return $this->memory->enqueue($rpc); } return $this->queue->enqueue($rpc); }
/** * @param Rpc $message * @return PromiseInterface */ public function rpc(Rpc $message) { $hash = spl_object_hash($message); $deferred = new Deferred(); $this->deferreds[$hash] = $deferred; $this->queue->enqueue($message); $this->manager->ping(); return $deferred->promise(); }
/** * @dataProvider queueProvider */ public function testOperations(QueueInterface $queue) { $rpc0 = Factory::rpc('a', ['b']); $rpc1 = Factory::rpc('c', ['d']); $rpc2 = Factory::rpc('e', ['f']); $this->assertSame(0, $queue->count()); $queue->enqueue($rpc0); $this->assertSame(1, $queue->count()); $queue->enqueue($rpc1); $this->assertSame(2, $queue->count()); $queue->enqueue($rpc2); $this->assertSame(3, $queue->count()); $this->assertSame(json_encode($rpc0), json_encode($this->dequeue($queue->dequeue()))); $this->assertSame(2, $queue->count()); $this->assertSame(json_encode($rpc1), json_encode($this->dequeue($queue->dequeue()))); $this->assertSame(1, $queue->count()); $this->assertSame(json_encode($rpc2), json_encode($this->dequeue($queue->dequeue()))); $this->assertSame(0, $queue->count()); }