Exemplo n.º 1
0
 /**
  * Fetches a channel object identified by the numeric channel_id, or
  * create that object if it doesn't already exist.
  *
  * @param int $channel_id
  * @return AMQPChannel
  */
 public function channel(int $channel_id = null)
 {
     // garbage collect channels
     foreach ($this->channels as $i => $channel) {
         if ($channel->isClosed()) {
             unset($this->channels[$i]);
         }
     }
     //
     if (isset($this->channels[$channel_id])) {
         (yield $this->channels[$channel_id]);
     } else {
         $channel_id = $channel_id ? $channel_id : $this->getFreeChannelID();
         $ch = new AMQPChannel($this, $channel_id);
         $this->channels[$channel_id] = $ch;
         (yield $ch->open());
         (yield $ch);
     }
 }