Package backtype.storm.serialization

Source Code of backtype.storm.serialization.KryoValuesSerializer

package backtype.storm.serialization;

import backtype.storm.utils.ListDelegate;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.io.Output;
import java.io.IOException;
import java.util.List;
import java.util.Map;

public class KryoValuesSerializer {
  Kryo _kryo;
  ListDelegate _delegate;
  Output _kryoOut;

  public KryoValuesSerializer(Map conf) {
    _kryo = SerializationFactory.getKryo(conf);
    _delegate = new ListDelegate();
    _kryoOut = new Output(2000, 2000000000);
  }

  public void serializeInto(List<Object> values, Output out)
      throws IOException {
    // this ensures that list of values is always written the same way,
    // regardless
    // of whether it's a java collection or one of clojure's persistent
    // collections
    // (which have different serializers)
    // Doing this lets us deserialize as ArrayList and avoid writing the
    // class here
    _delegate.setDelegate(values);
    _kryo.writeObject(out, _delegate);
  }

  public byte[] serialize(List<Object> values) throws IOException {
    _kryoOut.clear();
    serializeInto(values, _kryoOut);
    return _kryoOut.toBytes();
  }

  public byte[] serializeObject(Object obj) {
    _kryoOut.clear();
    _kryo.writeClassAndObject(_kryoOut, obj);
    return _kryoOut.toBytes();
  }
}
TOP

Related Classes of backtype.storm.serialization.KryoValuesSerializer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.