CommonAsset class

Пакет: com.hypixel.hytale.server.core.asset.common

Файл: com/hypixel/hytale/server/core/asset/common/CommonAsset.java

implements: NetworkSerializable<Asset>

Поля (7)

МодификаторыТипИмя
final int HASH_LENGTH
CompletableFuture var1
var1
Asset var1
int var1
Asset var2
CommonAsset var2

Методы (5)

МодификаторыВозвратСигнатура
public CompletableFuture<byte[]> getBlobCompletableFuture<byte[]> getBlob()
abstract abstract CompletableFuture<byte[]> getBlob0CompletableFuture<byte[]> getBlob0()
if if(var1 == null)
if if(var1 != null)
if if(this == var1)

Исходный код

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

class="kw">import com.hypixel.hytale.common.util.PatternUtil;
class="kw">import com.hypixel.hytale.protocol.Asset;
class="kw">import com.hypixel.hytale.server.core.io.NetworkSerializable;
class="kw">import com.hypixel.hytale.server.core.util.HashUtil;
class="kw">import java.lang.ref.SoftReference;
class="kw">import java.lang.ref.WeakReference;
class="kw">import java.util.Locale;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.regex.Pattern;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class="kw">abstract class CommonAsset class="kw">implements NetworkSerializable<Asset> {
   class="kw">public class="kw">static class="kw">final int HASH_LENGTH = 64;
   class="kw">public class="kw">static class="kw">final Pattern HASH_PATTERN = Pattern.compile("^[A-Fa-f0-9]{64}$");
   @Nonnull
   class="kw">private class="kw">final String name;
   @Nonnull
   class="kw">private class="kw">final String hash;
   class="kw">protected class="kw">transient WeakReference<CompletableFuture<byte[]>> blob;
   class="kw">protected class="kw">transient SoftReference<Asset> cachedPacket;

   class="kw">public CommonAsset(@Nonnull String var1, @Nullable byte[] var2) {
      this.name = PatternUtil.replaceBackslashWithForwardSlash(var1);
      this.hash = hash(var2);
      this.blob = new WeakReference<>(var2 != null ? CompletableFuture.completedFuture(var2) : null);
   }

   class="kw">public CommonAsset(@Nonnull String var1, @Nonnull String var2, @Nullable byte[] var3) {
      this.name = PatternUtil.replaceBackslashWithForwardSlash(var1);
      this.hash = var2.toLowerCase(Locale.ROOT);
      this.blob = new WeakReference<>(var3 != null ? CompletableFuture.completedFuture(var3) : null);
   }

   @Nonnull
   class="kw">public String getName() {
      class="kw">return this.name;
   }

   @Nonnull
   class="kw">public String getHash() {
      class="kw">return this.hash;
   }

   class="kw">public CompletableFuture<byte[]> getBlob() {
      CompletableFuture var1 = this.blob.get();
      if (var1 == null) {
         var1 = this.getBlob0();
         this.blob = new WeakReference<>(var1);
      }

      class="kw">return var1;
   }

   class="kw">protected class="kw">abstract CompletableFuture<byte[]> getBlob0();

   @Nonnull
   class="kw">public Asset toPacket() {
      Asset var1 = this.cachedPacket == null ? null : this.cachedPacket.get();
      if (var1 != null) {
         class="kw">return var1;
      }

      Asset var2 = new Asset(this.hash, this.name);
      this.cachedPacket = new SoftReference<>(var2);
      class="kw">return var2;
   }

   @Override
   class="kw">public boolean equals(@Nullable Object var1) {
      if (this == var1) {
         class="kw">return true;
      } else if (var1 != null && this.getClass() == var1.getClass()) {
         CommonAsset var2 = (CommonAsset)var1;
         class="kw">return !this.name.equals(var2.name) ? false : this.hash.equals(var2.hash);
      } else {
         class="kw">return false;
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = this.name.hashCode();
      class="kw">return 31 * var1 + this.hash.hashCode();
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "CommonAsset{name='" + this.name + "', hash='" + this.hash + "'}";
   }

   @Nonnull
   class="kw">public class="kw">static String hash(byte[] var0) {
      class="kw">return HashUtil.sha256(var0);
   }
}