blob: b91f4c9baaa470c2cee50f43861a26a879103915 [file] [log] [blame]
Madan Jampani25461112015-02-17 14:17:29 -08001/*
2 * Copyright 2015 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Madan Jampanif4c88502016-01-21 12:35:36 -080017package org.onosproject.store.primitives.impl;
Madan Jampani393e0f02015-02-12 07:35:39 +053018
19import java.nio.ByteBuffer;
20
Madan Jampani393e0f02015-02-12 07:35:39 +053021import org.onlab.util.KryoNamespace;
Madan Jampanif2f086c2016-01-13 16:15:39 -080022import org.onlab.util.Match;
Madan Jampani63c659f2015-06-11 00:52:58 -070023import org.onosproject.cluster.NodeId;
Madan Jampanicadd70b2016-02-08 13:45:43 -080024import org.onosproject.store.primitives.TransactionId;
25import org.onosproject.store.primitives.resources.impl.MapUpdate;
Madan Jampani393e0f02015-02-12 07:35:39 +053026import org.onosproject.store.serializers.KryoNamespaces;
27import org.onosproject.store.serializers.KryoSerializer;
28import org.onosproject.store.service.Versioned;
29
30import net.kuujo.copycat.cluster.internal.MemberInfo;
Madan Jampanied1b7fc2015-04-27 23:30:07 -070031import net.kuujo.copycat.raft.protocol.AppendRequest;
32import net.kuujo.copycat.raft.protocol.AppendResponse;
33import net.kuujo.copycat.raft.protocol.CommitRequest;
34import net.kuujo.copycat.raft.protocol.CommitResponse;
35import net.kuujo.copycat.raft.protocol.PollRequest;
36import net.kuujo.copycat.raft.protocol.PollResponse;
37import net.kuujo.copycat.raft.protocol.QueryRequest;
38import net.kuujo.copycat.raft.protocol.QueryResponse;
39import net.kuujo.copycat.raft.protocol.ReplicaInfo;
40import net.kuujo.copycat.raft.protocol.SyncRequest;
41import net.kuujo.copycat.raft.protocol.SyncResponse;
42import net.kuujo.copycat.raft.protocol.VoteRequest;
43import net.kuujo.copycat.raft.protocol.VoteResponse;
Madan Jampani393e0f02015-02-12 07:35:39 +053044import net.kuujo.copycat.util.serializer.SerializerConfig;
45
46/**
47 * Serializer for DatabaseManager's interaction with Copycat.
48 */
49public class DatabaseSerializer extends SerializerConfig {
50
51 private static final KryoNamespace COPYCAT = KryoNamespace.newBuilder()
52 .nextId(KryoNamespace.FLOATING_ID)
53 .register(AppendRequest.class)
54 .register(AppendResponse.class)
55 .register(SyncRequest.class)
56 .register(SyncResponse.class)
Madan Jampanied1b7fc2015-04-27 23:30:07 -070057 .register(VoteRequest.class)
58 .register(VoteResponse.class)
Madan Jampani393e0f02015-02-12 07:35:39 +053059 .register(PollRequest.class)
60 .register(PollResponse.class)
61 .register(QueryRequest.class)
62 .register(QueryResponse.class)
63 .register(CommitRequest.class)
64 .register(CommitResponse.class)
65 .register(ReplicaInfo.class)
66 .register(MemberInfo.class)
67 .build();
68
69 private static final KryoNamespace ONOS_STORE = KryoNamespace.newBuilder()
70 .nextId(KryoNamespace.FLOATING_ID)
71 .register(Versioned.class)
Madan Jampanicadd70b2016-02-08 13:45:43 -080072 .register(MapUpdate.class)
73 .register(MapUpdate.Type.class)
Madan Jampanibff6d8f2015-03-31 16:53:47 -070074 .register(Result.class)
Madan Jampani346d4f52015-05-04 11:09:39 -070075 .register(UpdateResult.class)
Madan Jampanibff6d8f2015-03-31 16:53:47 -070076 .register(Result.Status.class)
Madan Jampanicadd70b2016-02-08 13:45:43 -080077 .register(Transaction.class)
Madan Jampanibff6d8f2015-03-31 16:53:47 -070078 .register(Transaction.State.class)
Madan Jampanicadd70b2016-02-08 13:45:43 -080079 .register(TransactionId.class)
Madan Jampanif4c88502016-01-21 12:35:36 -080080 .register(org.onosproject.store.primitives.impl.CommitResponse.class)
Madan Jampani7804c992015-07-20 13:20:19 -070081 .register(Match.class)
Madan Jampani63c659f2015-06-11 00:52:58 -070082 .register(NodeId.class)
Madan Jampani393e0f02015-02-12 07:35:39 +053083 .build();
84
85 private static final KryoSerializer SERIALIZER = new KryoSerializer() {
86 @Override
87 protected void setupKryoPool() {
88 serializerPool = KryoNamespace.newBuilder()
89 .register(KryoNamespaces.BASIC)
90 .register(COPYCAT)
91 .register(ONOS_STORE)
92 .build();
93 }
94 };
95
96 @Override
97 public ByteBuffer writeObject(Object object) {
98 return ByteBuffer.wrap(SERIALIZER.encode(object));
99 }
100
101 @Override
102 public <T> T readObject(ByteBuffer buffer) {
103 return SERIALIZER.decode(buffer);
104 }
105}