/**
  * @return string
  */
 public function getEncoded()
 {
     $s = BinaryDataReader::pack64bit($this->count());
     /** @var Gtid $gtid */
     foreach ($this->toArray() as $gtid) {
         $s .= $gtid->getEncoded();
     }
     return $s;
 }
Пример #2
0
 /**
  * @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();
 }