Kraken\Channel\Model\Socket\Buffer\Buffer::pull PHP Метод

pull() публичный Метод

public pull ( string | null $id = null ) : string[]
$id string | null
Результат string[]
    public function pull($id = null)
    {
        $messages = [];
        if ($id === null) {
            foreach ($this->messageBuffer as $id => $buffer) {
                foreach ($buffer as $message) {
                    $messages[] = [$id, $message];
                }
                $this->messageBuffer[$id] = [];
            }
            $this->messageBuffer = [];
            $this->messageBufferSize = 0;
        } else {
            if (isset($this->messageBuffer[$id])) {
                $cnt = 0;
                foreach ($this->messageBuffer[$id] as $message) {
                    $messages[] = [$id, $message];
                    $cnt++;
                }
                unset($this->messageBuffer[$id]);
                $this->messageBufferSize -= $cnt;
            }
        }
        return $messages;
    }

Usage Example

Пример #1
0
 /**
  * @param Connection $conn
  */
 private function recvHeartbeat(Connection $conn)
 {
     if ($this->flags['enableHeartbeat'] !== true) {
         return;
     }
     if ($this->connectionPool->setConnection($conn)) {
         $this->emit('connect', [$conn->id]);
     }
     if ($this->type === Channel::BINDER) {
         $this->heartbeat($conn->id);
     }
     foreach ($messages = $this->onlineBuffer->pull($conn->id) as $message) {
         $this->unicast($message[0], $message[1]);
     }
 }