/** * @return string */ public function getEncoded() { $s = BinaryDataReader::pack64bit($this->count()); /** @var Gtid $gtid */ foreach ($this->toArray() as $gtid) { $s .= $gtid->getEncoded(); } return $s; }
/** * @return string */ public function getEncoded() { $buffer = pack('H*', $this->sid); $buffer .= BinaryDataReader::pack64bit(count($this->intervals)); foreach ($this->intervals as $interval) { if (count($interval) !== 1) { $buffer .= BinaryDataReader::pack64bit($interval[0]); $buffer .= BinaryDataReader::pack64bit($interval[1]); } else { $buffer .= BinaryDataReader::pack64bit($interval[0]); $buffer .= BinaryDataReader::pack64bit($interval[0] + 1); } } return $buffer; }
/** * @see https://dev.mysql.com/doc/internals/en/com-binlog-dump-gtid.html * @throws BinLogException * @throws GtidException */ private function setBinLogDumpGtid() { $collection = $this->gtidService->makeCollectionFromString($this->config->getGtid()); $prelude = pack('l', 26 + $collection->getEncodedLength()) . chr(ConstCommand::COM_BINLOG_DUMP_GTID); $prelude .= pack('S', 0); $prelude .= pack('I', $this->config->getSlaveId()); $prelude .= pack('I', 3); $prelude .= chr(0); $prelude .= chr(0); $prelude .= chr(0); $prelude .= BinaryDataReader::pack64bit(4); $prelude .= pack('I', $collection->getEncodedLength()); $prelude .= $collection->getEncoded(); $this->writeToSocket($prelude); $this->getPacket(); }