/**
  * @see https://dev.mysql.com/doc/internals/en/com-binlog-dump.html
  * @throws BinLogException
  */
 private function setBinLogDump()
 {
     $binFilePos = $this->config->getBinLogPosition();
     $binFileName = $this->config->getBinLogFileName();
     if ('' !== $this->config->getMariaDbGtid()) {
         $this->execute('SET @mariadb_slave_capability = 4');
         $this->execute('SET @slave_connect_state = \'' . $this->config->getMariaDbGtid() . '\'');
         $this->execute('SET @slave_gtid_strict_mode = 0');
         $this->execute('SET @slave_gtid_ignore_duplicates = 0');
     }
     if (0 === $binFilePos || '' === $binFileName) {
         $master = $this->repository->getMasterStatus();
         $binFilePos = $master['Position'];
         $binFileName = $master['File'];
     }
     $prelude = pack('i', strlen($binFileName) + 11) . chr(ConstCommand::COM_BINLOG_DUMP);
     $prelude .= pack('I', $binFilePos);
     $prelude .= pack('v', 0);
     $prelude .= pack('I', $this->config->getSlaveId());
     $prelude .= $binFileName;
     $this->writeToSocket($prelude);
     $this->getPacket();
 }