Class NamespaceImpl

  • All Implemented Interfaces:
    com.esotericsoftware.kryo.pool.KryoFactory, com.esotericsoftware.kryo.pool.KryoPool, Namespace

    public class NamespaceImpl
    extends Object
    implements Namespace, com.esotericsoftware.kryo.pool.KryoFactory, com.esotericsoftware.kryo.pool.KryoPool
    Pool of Kryo instances, with classes pre-registered.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  NamespaceImpl.Builder
      KryoNamespace builder.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int DEFAULT_BUFFER_SIZE
      Default buffer size used for serialization.
      static int FLOATING_ID
      ID to use if this KryoNamespace does not define registration id.
      static int INITIAL_ID
      Smallest ID free to use for user defined registrations.
      static int MAX_BUFFER_SIZE
      Maximum allowed buffer size.
    • Constructor Summary

      Constructors 
      Constructor Description
      NamespaceImpl​(List<io.atomix.utils.serializer.NamespaceImpl.RegistrationBlock> registeredTypes, ClassLoader classLoader, boolean registrationRequired, boolean compatible, String friendlyName)
      Creates a Kryo instance pool.
    • Field Detail

      • MAX_BUFFER_SIZE

        public static final int MAX_BUFFER_SIZE
        Maximum allowed buffer size.
        See Also:
        Constant Field Values
      • FLOATING_ID

        public static final int FLOATING_ID
        ID to use if this KryoNamespace does not define registration id.
        See Also:
        Constant Field Values
      • INITIAL_ID

        public static final int INITIAL_ID
        Smallest ID free to use for user defined registrations.
        See Also:
        Constant Field Values
    • Constructor Detail

      • NamespaceImpl

        public NamespaceImpl​(List<io.atomix.utils.serializer.NamespaceImpl.RegistrationBlock> registeredTypes,
                             ClassLoader classLoader,
                             boolean registrationRequired,
                             boolean compatible,
                             String friendlyName)
        Creates a Kryo instance pool.
        Parameters:
        registeredTypes - types to register
        registrationRequired - whether registration is required
        compatible - whether compatible serialization is enabled
        friendlyName - friendly name for the namespace
    • Method Detail

      • populate

        public NamespaceImpl populate​(int instances)
        Populates the Kryo pool.
        Parameters:
        instances - to add to the pool
        Returns:
        this
      • serialize

        public byte[] serialize​(Object obj)
        Serializes given object to byte array using Kryo instance in pool.

        Note: Serialized bytes must be smaller than MAX_BUFFER_SIZE.

        Specified by:
        serialize in interface Namespace
        Parameters:
        obj - Object to serialize
        Returns:
        serialized bytes
      • serialize

        public void serialize​(Object obj,
                              ByteBuffer buffer)
        Serializes given object to byte buffer using Kryo instance in pool.
        Specified by:
        serialize in interface Namespace
        Parameters:
        obj - Object to serialize
        buffer - to write to
      • deserialize

        public <T> T deserialize​(byte[] bytes)
        Deserializes given byte array to Object using Kryo instance in pool.
        Specified by:
        deserialize in interface Namespace
        Type Parameters:
        T - deserialized Object type
        Parameters:
        bytes - serialized bytes
        Returns:
        deserialized Object
      • deserialize

        public <T> T deserialize​(ByteBuffer buffer)
        Deserializes given byte buffer to Object using Kryo instance in pool.
        Specified by:
        deserialize in interface Namespace
        Type Parameters:
        T - deserialized Object type
        Parameters:
        buffer - input with serialized bytes
        Returns:
        deserialized Object
      • getRegisteredBlocks

        public com.google.common.collect.ImmutableList<io.atomix.utils.serializer.NamespaceImpl.RegistrationBlock> getRegisteredBlocks()
        Specified by:
        getRegisteredBlocks in interface Namespace
      • deserialize

        public <T> T deserialize​(byte[] bytes,
                                 int offset)
        Deserializes given byte array to Object using Kryo instance in pool.
        Type Parameters:
        T - deserialized Object type
        Parameters:
        bytes - serialized bytes
        offset - offset in serialized bytes
        Returns:
        deserialized Object
      • create

        public com.esotericsoftware.kryo.Kryo create()
        Creates a Kryo instance.
        Specified by:
        create in interface com.esotericsoftware.kryo.pool.KryoFactory
        Returns:
        Kryo instance
      • borrow

        public com.esotericsoftware.kryo.Kryo borrow()
        Specified by:
        borrow in interface com.esotericsoftware.kryo.pool.KryoPool
      • release

        public void release​(com.esotericsoftware.kryo.Kryo kryo)
        Specified by:
        release in interface com.esotericsoftware.kryo.pool.KryoPool
      • run

        public <T> T run​(com.esotericsoftware.kryo.pool.KryoCallback<T> callback)
        Specified by:
        run in interface com.esotericsoftware.kryo.pool.KryoPool