package org.onlab.onos.store.serializers;

import org.onlab.onos.store.impl.MastershipBasedTimestamp;
import org.onlab.onos.store.impl.Timestamped;
import org.onlab.onos.store.impl.WallClockTimestamp;
import org.onlab.util.KryoPool;

public final class DistributedStoreSerializers {

    /**
     * KryoPool which can serialize ON.lab misc classes.
     */
    public static final KryoPool COMMON = KryoPool.newBuilder()
            .register(KryoPoolUtil.API)
            .register(Timestamped.class)
            .register(MastershipBasedTimestamp.class, new MastershipBasedTimestampSerializer())
            .register(WallClockTimestamp.class)
            .build();

    // avoid instantiation
    private DistributedStoreSerializers() {}
}
