BackupUtil class

Пакет: com.hypixel.hytale.server.core.util.backup

Файл: com/hypixel/hytale/server/core/util/backup/BackupUtil.java

Поля (7)

МодификаторыТипИмя
Message var1
byte[] var11
int var12
ZipEntry var19
List var3
long var7
CRC32 var9

Методы (3)

МодификаторыВозвратСигнатура
static void broadcastBackupErrorvoid broadcastBackupError(Throwable var0)
static void broadcastBackupStatusvoid broadcastBackupStatus(boolean var0)
static void walkFileTreeAndZipvoid walkFileTreeAndZip(@Nonnull Path var0, @Nonnull Path var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.util.backup;

class="kw">import com.hypixel.hytale.common.util.PathUtil;
class="kw">import com.hypixel.hytale.common.util.java.ManifestUtil;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.WorldSavingStatus;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.permissions.HytalePermissions;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
class="kw">import java.io.IOException;
class="kw">import java.io.InputStream;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.nio.file.attribute.BasicFileAttributes;
class="kw">import java.nio.file.attribute.FileTime;
class="kw">import java.util.Comparator;
class="kw">import java.util.List;
class="kw">import java.util.stream.Stream;
class="kw">import java.util.zip.CRC32;
class="kw">import java.util.zip.ZipEntry;
class="kw">import java.util.zip.ZipOutputStream;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class BackupUtil {
   BackupUtil() {
   }

   class="kw">static void walkFileTreeAndZip(@Nonnull Path var0, @Nonnull Path var1) class="kw">throws IOException {
      try (ZipOutputStream var2 = new ZipOutputStream(Files.newOutputStream(var1))) {
         var2.setMethod(0);
         var2.setLevel(0);
         var2.setComment(
            "Automated backup by HytaleServer - Version: "
               + ManifestUtil.getImplementationVersion()
               + ", Revision: "
               + ManifestUtil.getImplementationRevisionId()
         );

         try (Stream var3 = Files.walk(var0)) {
            for (Path var6 : var3.filter(var0x -> Files.isRegularFile(var0x)).filter(var0x -> !var0x.endsWith("LOCK")).toList()) {
               long var7 = Files.size(var6);
               CRC32 var9 = new CRC32();

               try (InputStream var10 = Files.newInputStream(var6)) {
                  byte[] var11 = new byte[16384];

                  int var12;
                  while ((var12 = var10.read(var11)) != -1) {
                     var9.update(var11, 0, var12);
                  }
               }

               ZipEntry var19 = new ZipEntry(PathUtil.toUnixPathString(var0.relativize(var6)));
               var19.setSize(var7);
               var19.setCompressedSize(var7);
               var19.setCrc(var9.getValue());
               var2.putNextEntry(var19);
               Files.copy(var6, var2);
               var2.closeEntry();
            }
         }
      }
   }

   class="kw">static void broadcastBackupStatus(boolean var0) {
      Universe.get().broadcastPacket(new WorldSavingStatus(var0));
   }

   class="kw">static void broadcastBackupError(Throwable var0) {
      Message var1 = Message.translation("server.universe.backup.error").param("message", var0.getLocalizedMessage());
      Universe.get().getPlayers().forEach(var1x -> {
         if (var1x.hasPermission(HytalePermissions.BACKUP_ERROR_NOTIFY)) {
            var1x.sendMessage(var1);
         }
      });
   }

   @Nullable
   class="kw">static List<Path> findOldBackups(@Nonnull Path var0, int var1) class="kw">throws IOException {
      if (!var0.toFile().isDirectory()) {
         class="kw">return null;
      }

      try (Stream var2 = Files.list(var0)) {
         List var3 = var2.filter(var0x -> var0x.getFileName().toString().endsWith(".zip")).sorted(Comparator.comparing(var0x -> {
            try {
               class="kw">return Files.readAttributes(var0x, BasicFileAttributes.class).creationTime();
            } catch (IOException var2) {
               class="kw">return FileTime.fromMillis(0L);
            }
         })).toList();
         if (var3.size() > var1) {
            class="kw">return var3.subList(0, var3.size() - var1);
         }
      }

      class="kw">return null;
   }
}