subscriptions = array_values($subscriptions); $this->identifier = $generator->generatePacketID(); } public function getCode() { return 'unsubscribe'; } public function start() { $packet = new UnsubscribeRequestPacket(); $packet->setTopic($this->subscriptions[0]->getFilter()); $packet->setIdentifier($this->identifier); return $packet; } public function accept(Packet $packet) { if ($packet->getPacketType() !== Packet::TYPE_UNSUBACK) { return false; } /* @var UnsubscribeResponsePacket $packet */ return $packet->getIdentifier() === $this->identifier; } public function next(Packet $packet) { $this->succeed($this->subscriptions[0]); } }