@Override public void returnKryo(Kryo kryo) { pool.release(kryo); } }
public PooledKryoFactory() { // Build pool with SoftReferences enabled (optional) pool = new KryoPool.Builder(this).softReferences().build(); }
@Override public Kryo getKryo() { return pool.borrow(); }
@Override public T deserialize(final byte[] bytes) { return pool.run(new KryoCallback<T>() { public T execute(Kryo kryo) { ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); Input input = new Input(byteArrayInputStream); return (T) kryo.readClassAndObject(input); } }); }
public PooledKryoFactory() { // Build pool with SoftReferences enabled (optional) pool = new KryoPool.Builder(this).softReferences().build(); }
@Override public byte[] serialize(final T object) { return pool.run(new KryoCallback<byte[]>() { public byte[] execute(Kryo kryo) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); Output output = new Output(byteArrayOutputStream); kryo.writeClassAndObject(output, object); output.flush(); return byteArrayOutputStream.toByteArray(); } }); }
@Override public void returnKryo(Kryo kryo) { pool.release(kryo); } }
@Override public Kryo getKryo() { return pool.borrow(); }
public KryoPoolCodec(KryoFactory kryoFactory, boolean lengthFieldFraming) { this(new KryoPool.Builder(kryoFactory).softReferences().build(), lengthFieldFraming); }
@Override public T clone(final T object) { return pool.run(new KryoCallback<T>() { public T execute(Kryo kryo) { return kryo.copy(object); } }); } }
/** * Release kryo instance back to the pool. * * @param kryo - kryo instance to be released */ public static void releaseKryo(Kryo kryo) { kryoPool.release(kryo); }
@Override public Kryo borrow() { return kryoPool.borrow(); }
public KryoMessageBodyProvider() { final KryoFactory kryoFactory = new KryoFactory() { public Kryo create() { final Kryo kryo = new Kryo(); //TODO: configure kryo instance, customize settings //TODO: e.g. looking for Kryo via ContextResolver (like Jackson) return kryo; } }; kryoPool = new KryoPool.Builder(kryoFactory).softReferences().build(); }
@Override public <T> T run(KryoCallback<T> callback) { return kryoPool.run(callback); }
@Override public void release(Kryo kryo) { kryoPool.release(kryo); }
@Override public Object readFrom(final Class<Object> type, final Type genericType, final Annotation[] annotations, final MediaType mediaType, final MultivaluedMap<String, String> httpHeaders, final InputStream entityStream) throws IOException, WebApplicationException { final Input input = new Input(entityStream); return kryoPool.run(new KryoCallback() { public Object execute(Kryo kryo) { return kryo.readObject(input, type); } }); }
@Override public void writeTo(final Object object, final Class<?> type, final Type genericType, final Annotation[] annotations, final MediaType mediaType, final MultivaluedMap<String, Object> httpHeaders, final OutputStream entityStream) throws IOException, WebApplicationException { final Output output = new Output(entityStream); kryoPool.run(new KryoCallback() { public Object execute(Kryo kryo) { kryo.writeObject(output, object); return null; } }); output.flush(); }
@Override public <T> T clone(final T object) { if (object != null) { return kryoPool.run(kryo -> kryo.copy(object)); } return null; } }