Package com.twitter.meatlocker.kryo

Source Code of com.twitter.meatlocker.kryo.TBaseSerializer

package com.twitter.meatlocker.kryo;

import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.Serializer;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import org.apache.thrift.TBase;
import org.apache.thrift.TDeserializer;
import org.apache.thrift.TException;
import org.apache.thrift.TSerializer;

public class TBaseSerializer extends Serializer<TBase> {
    TSerializer serializer  = new TSerializer();
    TDeserializer deserializer  = new TDeserializer();

    @Override
    public void write(Kryo kryo, Output output, TBase tBase) {
        try {
            byte[] serThrift = serializer.serialize(tBase);
            output.writeInt(serThrift.length, true);
            output.writeBytes(serThrift);
        } catch (TException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public TBase read(Kryo kryo, Input input, Class<TBase> tBaseClass) {
        try {
            TBase prototype = tBaseClass.newInstance();
            int tSize = input.readInt(true);
            byte[] barr = new byte[tSize];
            input.readBytes(barr);
            deserializer.deserialize(prototype, barr);
            return prototype;
        } catch (Exception e) {
            throw new RuntimeException("Could not create " + tBaseClass, e);
        }
    }
}
TOP

Related Classes of com.twitter.meatlocker.kryo.TBaseSerializer

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.