public function enqueue(Rpc $rpc)
 {
     if ($this->memory->count() < $this->threshold) {
         return $this->memory->enqueue($rpc);
     }
     return $this->queue->enqueue($rpc);
 }
Ejemplo n.º 2
0
 /**
  * @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());
 }