Codec interface

Пакет: com.hypixel.hytale.codec

Файл: com/hypixel/hytale/codec/Codec.java

extends: RawJsonCodec<T>, SchemaConvertable<T>

Поля (5)

МодификаторыТипИмя
StringSchema var2
int var3
BsonValue var3
byte[] var4
var4

Методы (11)

МодификаторыВозвратСигнатура
abstract return new BsonBinaryreturn new BsonBinary(var1)
abstract throw new CodecExceptionthrow new CodecException("Failed to decode", var1, var2, var9)
public byte[] decodepublic byte[] decode(@Nonnull BsonValue var1, ExtraInfo var2)
public byte[] decodeJsonpublic byte[] decodeJson(RawJsonReader var1, ExtraInfo var2)
public BsonValue encodepublic BsonValue encode(@Nonnull byte[] var1, ExtraInfo var2)
abstract BsonValue encodeBsonValue encode(T var1, ExtraInfo var2)
if if(var3 == var4.length)
if if(var4.length == var3)
static boolean isNullBsonValueboolean isNullBsonValue(@Nullable BsonValue var0)
public Schema toSchemapublic Schema toSchema(@Nonnull SchemaContext var1)
while while(true)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.codecs.BsonDocumentCodec;
class="kw">import com.hypixel.hytale.codec.codecs.UUIDBinaryCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.DoubleArrayCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.FloatArrayCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.IntArrayCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.LongArrayCodec;
class="kw">import com.hypixel.hytale.codec.codecs.simple.BooleanCodec;
class="kw">import com.hypixel.hytale.codec.codecs.simple.ByteCodec;
class="kw">import com.hypixel.hytale.codec.codecs.simple.DoubleCodec;
class="kw">import com.hypixel.hytale.codec.codecs.simple.FloatCodec;
class="kw">import com.hypixel.hytale.codec.codecs.simple.IntegerCodec;
class="kw">import com.hypixel.hytale.codec.codecs.simple.LongCodec;
class="kw">import com.hypixel.hytale.codec.codecs.simple.NullableBooleanCodec;
class="kw">import com.hypixel.hytale.codec.codecs.simple.ShortCodec;
class="kw">import com.hypixel.hytale.codec.codecs.simple.StringCodec;
class="kw">import com.hypixel.hytale.codec.exception.CodecException;
class="kw">import com.hypixel.hytale.codec.function.FunctionCodec;
class="kw">import com.hypixel.hytale.codec.schema.SchemaContext;
class="kw">import com.hypixel.hytale.codec.schema.SchemaConvertable;
class="kw">import com.hypixel.hytale.codec.schema.config.Schema;
class="kw">import com.hypixel.hytale.codec.schema.config.StringSchema;
class="kw">import com.hypixel.hytale.codec.util.RawJsonReader;
class="kw">import java.io.IOException;
class="kw">import java.nio.file.Path;
class="kw">import java.nio.file.Paths;
class="kw">import java.time.Duration;
class="kw">import java.time.Instant;
class="kw">import java.util.Arrays;
class="kw">import java.util.UUID;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import java.util.logging.Level;
class="kw">import java.util.regex.Pattern;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonBinary;
class="kw">import org.bson.BsonValue;

class="kw">public class="kw">interface Codec<T> class="kw">extends RawJsonCodec<T>, SchemaConvertable<T> {
   @Deprecated
   BsonDocumentCodec BSON_DOCUMENT = new BsonDocumentCodec();
   StringCodec STRING = new StringCodec();
   BooleanCodec BOOLEAN = new BooleanCodec();
   NullableBooleanCodec NULLABLE_BOOLEAN = new NullableBooleanCodec();
   DoubleCodec DOUBLE = new DoubleCodec();
   FloatCodec FLOAT = new FloatCodec();
   ByteCodec BYTE = new ByteCodec();
   ShortCodec SHORT = new ShortCodec();
   IntegerCodec INTEGER = new IntegerCodec();
   LongCodec LONG = new LongCodec();
   Pattern BASE64_PATTERN = Pattern.compile("^[0-9a-zA-Z+/]+$");
   @Deprecated
   Codec<byte[]> BYTE_ARRAY = new Codec<byte[]>() {
      class="kw">public byte[] decode(@Nonnull BsonValue var1, ExtraInfo var2) {
         class="kw">return var1.asBinary().getData();
      }

      @Nonnull
      class="kw">public BsonValue encode(@Nonnull byte[] var1, ExtraInfo var2) {
         class="kw">return new BsonBinary(var1);
      }

      @Nullable
      class="kw">public byte[] decodeJson(RawJsonReader var1, ExtraInfo var2) class="kw">throws IOException {
         var1.expect('[');
         var1.consumeWhiteSpace();
         if (var1.tryConsume(']')) {
            class="kw">return new byte[0];
         }

         int var3 = 0;
         byte[] var4 = new byte[10];

         while (true) {
            if (var3 == var4.length) {
               var4 = Arrays.copyOf(var4, var3 + 1 + (var3 >> 1));
            }

            var2.pushIntKey(var3, var1);

            try {
               var4[var3] = var1.readByteValue();
               var3++;
            } catch (Exception var9) {
               throw new CodecException("Failed to decode", var1, var2, var9);
            } class="kw">finally {
               var2.popKey();
            }

            var1.consumeWhiteSpace();
            if (var1.tryConsumeOrExpect(']', ',')) {
               if (var4.length == var3) {
                  class="kw">return var4;
               }

               class="kw">return Arrays.copyOf(var4, var3);
            }

            var1.consumeWhiteSpace();
         }
      }

      @Nonnull
      @Override
      class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
         StringSchema var2 = new StringSchema();
         var2.setPattern(BASE64_PATTERN);
         var2.setTitle("Binary");
         class="kw">return var2;
      }
   };
   DoubleArrayCodec DOUBLE_ARRAY = new DoubleArrayCodec();
   FloatArrayCodec FLOAT_ARRAY = new FloatArrayCodec();
   IntArrayCodec INT_ARRAY = new IntArrayCodec();
   LongArrayCodec LONG_ARRAY = new LongArrayCodec();
   ArrayCodec<String> STRING_ARRAY = new ArrayCodec<>(STRING, String[]::new);
   FunctionCodec<String, Path> PATH = new FunctionCodec<>(STRING, var0 -> Paths.get(var0), Path::toString);
   FunctionCodec<String, Instant> INSTANT = new FunctionCodec<>(STRING, Instant::parse, Instant::toString);
   FunctionCodec<String, Duration> DURATION = new FunctionCodec<>(STRING, Duration::parse, Duration::toString);
   FunctionCodec<Double, Duration> DURATION_SECONDS = new FunctionCodec<>(
      DOUBLE,
      var0 -> Duration.ofNanos((long)(var0 * TimeUnit.SECONDS.toNanos(1L))),
      var0 -> var0 == null ? null : (double)var0.toNanos() / TimeUnit.SECONDS.toNanos(1L)
   );
   FunctionCodec<String, Level> LOG_LEVEL = new FunctionCodec<>(STRING, Level::parse, Level::toString);
   UUIDBinaryCodec UUID_BINARY = new UUIDBinaryCodec();
   FunctionCodec<String, UUID> UUID_STRING = new FunctionCodec<>(STRING, UUID::fromString, UUID::toString);

   @Nullable
   @Deprecated
   class="kw">default T decode(BsonValue var1) {
      class="kw">return this.decode(var1, EmptyExtraInfo.EMPTY);
   }

   @Nullable
   T decode(BsonValue var1, ExtraInfo var2);

   @Deprecated
   class="kw">default BsonValue encode(T var1) {
      class="kw">return this.encode(var1, EmptyExtraInfo.EMPTY);
   }

   BsonValue encode(T var1, ExtraInfo var2);

   @Nullable
   @Override
   class="kw">default T decodeJson(@Nonnull RawJsonReader var1, ExtraInfo var2) class="kw">throws IOException {
      BsonValue var3 = RawJsonReader.readBsonValue(var1);
      class="kw">return this.decode(var3, var2);
   }

   class="kw">static boolean isNullBsonValue(@Nullable BsonValue var0) {
      class="kw">return var0 == null || var0.isNull();
   }
}