All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.esotericsoftware.kryo.serializers.FieldSerializerUnsafeUtil Maven / Gradle / Ivy


package com.esotericsoftware.kryo.serializers;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.List;

import com.esotericsoftware.kryo.serializers.FieldSerializer.CachedField;
import com.esotericsoftware.kryo.util.IntArray;

/* Helper interface for using Unsafe-based operations inside FieldSerializer. 
 * @author Roman Levenstein  */
interface FieldSerializerUnsafeUtil {

	/** Use Unsafe-based information about fields layout in memory to build a list of cached fields and memory regions representing
	 * consecutive fields in memory */
	public abstract void createUnsafeCacheFieldsAndRegions (List validFields, List cachedFields,
		int baseIndex, IntArray useAsm);

	public abstract long getObjectFieldOffset (Field field);

	static class Factory {
		static Constructor fieldSerializerUnsafeUtilConstructor;

		static {
			try {
				fieldSerializerUnsafeUtilConstructor = (Constructor)FieldSerializer.class.getClassLoader()
					.loadClass("com.esotericsoftware.kryo.serializers.FieldSerializerUnsafeUtilImpl")
					.getConstructor(FieldSerializer.class);
			} catch (Throwable e) {

			}
		}

		static FieldSerializerUnsafeUtil getInstance (FieldSerializer serializer) {
			if (fieldSerializerUnsafeUtilConstructor != null) {
				try {
					return fieldSerializerUnsafeUtilConstructor.newInstance(serializer);
				} catch (Exception e) {
				}
			}
			return null;
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy