blob: 0563361c987166e54bb2cbd9f0f3703cd8f93781 [file] [log] [blame]
Madan Jampani393e0f02015-02-12 07:35:39 +05301package org.onosproject.store.consistent.impl;
2
3import java.nio.ByteBuffer;
4
5import org.apache.commons.lang3.tuple.ImmutablePair;
6import org.apache.commons.lang3.tuple.Pair;
7import org.onlab.util.KryoNamespace;
8import org.onosproject.store.serializers.KryoNamespaces;
9import org.onosproject.store.serializers.KryoSerializer;
10import org.onosproject.store.service.Versioned;
11
12import net.kuujo.copycat.cluster.internal.MemberInfo;
13import net.kuujo.copycat.protocol.rpc.AppendRequest;
14import net.kuujo.copycat.protocol.rpc.AppendResponse;
15import net.kuujo.copycat.protocol.rpc.CommitRequest;
16import net.kuujo.copycat.protocol.rpc.CommitResponse;
17import net.kuujo.copycat.protocol.rpc.PollRequest;
18import net.kuujo.copycat.protocol.rpc.PollResponse;
19import net.kuujo.copycat.protocol.rpc.QueryRequest;
20import net.kuujo.copycat.protocol.rpc.QueryResponse;
21import net.kuujo.copycat.protocol.rpc.ReplicaInfo;
22import net.kuujo.copycat.protocol.rpc.SyncRequest;
23import net.kuujo.copycat.protocol.rpc.SyncResponse;
24import net.kuujo.copycat.util.serializer.SerializerConfig;
25
26/**
27 * Serializer for DatabaseManager's interaction with Copycat.
28 */
29public class DatabaseSerializer extends SerializerConfig {
30
31 private static final KryoNamespace COPYCAT = KryoNamespace.newBuilder()
32 .nextId(KryoNamespace.FLOATING_ID)
33 .register(AppendRequest.class)
34 .register(AppendResponse.class)
35 .register(SyncRequest.class)
36 .register(SyncResponse.class)
37 .register(PollRequest.class)
38 .register(PollResponse.class)
39 .register(QueryRequest.class)
40 .register(QueryResponse.class)
41 .register(CommitRequest.class)
42 .register(CommitResponse.class)
43 .register(ReplicaInfo.class)
44 .register(MemberInfo.class)
45 .build();
46
47 private static final KryoNamespace ONOS_STORE = KryoNamespace.newBuilder()
48 .nextId(KryoNamespace.FLOATING_ID)
49 .register(Versioned.class)
50 .register(Pair.class)
51 .register(ImmutablePair.class)
52 .build();
53
54 private static final KryoSerializer SERIALIZER = new KryoSerializer() {
55 @Override
56 protected void setupKryoPool() {
57 serializerPool = KryoNamespace.newBuilder()
58 .register(KryoNamespaces.BASIC)
59 .register(COPYCAT)
60 .register(ONOS_STORE)
61 .build();
62 }
63 };
64
65 @Override
66 public ByteBuffer writeObject(Object object) {
67 return ByteBuffer.wrap(SERIALIZER.encode(object));
68 }
69
70 @Override
71 public <T> T readObject(ByteBuffer buffer) {
72 return SERIALIZER.decode(buffer);
73 }
74}