blob: 4eaac99151d5e680099725ad8961fc8558836506 [file] [log] [blame]
Jordan Halterman2bf177c2017-06-29 01:49:08 -07001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2017-present Open Networking Foundation
Jordan Halterman2bf177c2017-06-29 01:49:08 -07003 *
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 */
16package org.onosproject.store.primitives.impl;
17
18import java.time.Instant;
19import java.util.ArrayList;
20import java.util.Collections;
21import java.util.HashSet;
22import java.util.LinkedList;
23
24import io.atomix.protocols.raft.RaftError;
25import io.atomix.protocols.raft.ReadConsistency;
26import io.atomix.protocols.raft.cluster.MemberId;
27import io.atomix.protocols.raft.cluster.RaftMember;
28import io.atomix.protocols.raft.cluster.impl.DefaultRaftMember;
29import io.atomix.protocols.raft.event.RaftEvent;
30import io.atomix.protocols.raft.event.impl.DefaultEventType;
31import io.atomix.protocols.raft.operation.OperationType;
32import io.atomix.protocols.raft.operation.RaftOperation;
33import io.atomix.protocols.raft.operation.impl.DefaultOperationId;
34import io.atomix.protocols.raft.protocol.AppendRequest;
35import io.atomix.protocols.raft.protocol.AppendResponse;
36import io.atomix.protocols.raft.protocol.CloseSessionRequest;
37import io.atomix.protocols.raft.protocol.CloseSessionResponse;
38import io.atomix.protocols.raft.protocol.CommandRequest;
39import io.atomix.protocols.raft.protocol.CommandResponse;
40import io.atomix.protocols.raft.protocol.ConfigureRequest;
41import io.atomix.protocols.raft.protocol.ConfigureResponse;
Jordan Halterman19486e32017-11-02 15:00:06 -070042import io.atomix.protocols.raft.protocol.HeartbeatRequest;
43import io.atomix.protocols.raft.protocol.HeartbeatResponse;
Jordan Halterman2bf177c2017-06-29 01:49:08 -070044import io.atomix.protocols.raft.protocol.InstallRequest;
45import io.atomix.protocols.raft.protocol.InstallResponse;
46import io.atomix.protocols.raft.protocol.JoinRequest;
47import io.atomix.protocols.raft.protocol.JoinResponse;
48import io.atomix.protocols.raft.protocol.KeepAliveRequest;
49import io.atomix.protocols.raft.protocol.KeepAliveResponse;
50import io.atomix.protocols.raft.protocol.LeaveRequest;
51import io.atomix.protocols.raft.protocol.LeaveResponse;
52import io.atomix.protocols.raft.protocol.MetadataRequest;
53import io.atomix.protocols.raft.protocol.MetadataResponse;
54import io.atomix.protocols.raft.protocol.OpenSessionRequest;
55import io.atomix.protocols.raft.protocol.OpenSessionResponse;
56import io.atomix.protocols.raft.protocol.PollRequest;
57import io.atomix.protocols.raft.protocol.PollResponse;
58import io.atomix.protocols.raft.protocol.PublishRequest;
59import io.atomix.protocols.raft.protocol.QueryRequest;
60import io.atomix.protocols.raft.protocol.QueryResponse;
61import io.atomix.protocols.raft.protocol.RaftResponse;
62import io.atomix.protocols.raft.protocol.ReconfigureRequest;
63import io.atomix.protocols.raft.protocol.ReconfigureResponse;
64import io.atomix.protocols.raft.protocol.ResetRequest;
65import io.atomix.protocols.raft.protocol.VoteRequest;
66import io.atomix.protocols.raft.protocol.VoteResponse;
Jordan Halterman2c045992018-03-20 21:33:00 -070067import io.atomix.protocols.raft.service.PropagationStrategy;
Jordan Halterman2bf177c2017-06-29 01:49:08 -070068import io.atomix.protocols.raft.session.RaftSessionMetadata;
69import io.atomix.protocols.raft.session.SessionId;
70import io.atomix.protocols.raft.storage.log.entry.CloseSessionEntry;
71import io.atomix.protocols.raft.storage.log.entry.CommandEntry;
72import io.atomix.protocols.raft.storage.log.entry.ConfigurationEntry;
73import io.atomix.protocols.raft.storage.log.entry.InitializeEntry;
74import io.atomix.protocols.raft.storage.log.entry.KeepAliveEntry;
75import io.atomix.protocols.raft.storage.log.entry.MetadataEntry;
76import io.atomix.protocols.raft.storage.log.entry.OpenSessionEntry;
77import io.atomix.protocols.raft.storage.log.entry.QueryEntry;
78import io.atomix.protocols.raft.storage.system.Configuration;
79import org.onlab.util.KryoNamespace;
Jordan Halterman2bf177c2017-06-29 01:49:08 -070080import org.onosproject.store.serializers.KryoNamespaces;
81
82/**
83 * Storage serializer namespaces.
84 */
85public final class StorageNamespaces {
86
87 /**
88 * Raft protocol namespace.
89 */
90 public static final KryoNamespace RAFT_PROTOCOL = KryoNamespace.newBuilder()
91 .register(KryoNamespaces.BASIC)
92 .nextId(KryoNamespaces.BEGIN_USER_CUSTOM_ID)
93 .register(OpenSessionRequest.class)
94 .register(OpenSessionResponse.class)
95 .register(CloseSessionRequest.class)
96 .register(CloseSessionResponse.class)
97 .register(KeepAliveRequest.class)
98 .register(KeepAliveResponse.class)
Jordan Halterman19486e32017-11-02 15:00:06 -070099 .register(HeartbeatRequest.class)
100 .register(HeartbeatResponse.class)
Jordan Halterman2bf177c2017-06-29 01:49:08 -0700101 .register(QueryRequest.class)
102 .register(QueryResponse.class)
103 .register(CommandRequest.class)
104 .register(CommandResponse.class)
105 .register(MetadataRequest.class)
106 .register(MetadataResponse.class)
107 .register(JoinRequest.class)
108 .register(JoinResponse.class)
109 .register(LeaveRequest.class)
110 .register(LeaveResponse.class)
111 .register(ConfigureRequest.class)
112 .register(ConfigureResponse.class)
113 .register(ReconfigureRequest.class)
114 .register(ReconfigureResponse.class)
115 .register(InstallRequest.class)
116 .register(InstallResponse.class)
117 .register(PollRequest.class)
118 .register(PollResponse.class)
119 .register(VoteRequest.class)
120 .register(VoteResponse.class)
121 .register(AppendRequest.class)
122 .register(AppendResponse.class)
123 .register(PublishRequest.class)
124 .register(ResetRequest.class)
125 .register(RaftResponse.Status.class)
126 .register(RaftError.class)
127 .register(RaftError.Type.class)
Jordan Halterman2b7501c2017-11-29 14:05:33 -0800128 .register(RaftOperation.class)
129 .register(DefaultOperationId.class)
130 .register(OperationType.class)
131 .register(RaftEvent.class)
132 .register(DefaultEventType.class)
Jordan Halterman2bf177c2017-06-29 01:49:08 -0700133 .register(RaftSessionMetadata.class)
134 .register(CloseSessionEntry.class)
135 .register(CommandEntry.class)
136 .register(ConfigurationEntry.class)
137 .register(InitializeEntry.class)
138 .register(KeepAliveEntry.class)
139 .register(MetadataEntry.class)
140 .register(OpenSessionEntry.class)
141 .register(QueryEntry.class)
Jordan Halterman2bf177c2017-06-29 01:49:08 -0700142 .register(ReadConsistency.class)
143 .register(ArrayList.class)
144 .register(LinkedList.class)
145 .register(Collections.emptyList().getClass())
146 .register(HashSet.class)
147 .register(DefaultRaftMember.class)
148 .register(MemberId.class)
149 .register(SessionId.class)
150 .register(RaftMember.Type.class)
Jordan Halterman2bf177c2017-06-29 01:49:08 -0700151 .register(Instant.class)
152 .register(Configuration.class)
Jordan Halterman2c045992018-03-20 21:33:00 -0700153 .register(PropagationStrategy.class)
Jordan Halterman2bf177c2017-06-29 01:49:08 -0700154 .build("RaftProtocol");
155
156 /**
157 * Raft storage namespace.
158 */
159 public static final KryoNamespace RAFT_STORAGE = KryoNamespace.newBuilder()
160 .register(KryoNamespaces.BASIC)
161 .nextId(KryoNamespaces.BEGIN_USER_CUSTOM_ID + 100)
162 .register(CloseSessionEntry.class)
163 .register(CommandEntry.class)
164 .register(ConfigurationEntry.class)
165 .register(InitializeEntry.class)
166 .register(KeepAliveEntry.class)
167 .register(MetadataEntry.class)
168 .register(OpenSessionEntry.class)
169 .register(QueryEntry.class)
170 .register(RaftOperation.class)
Jordan Halterman2b7501c2017-11-29 14:05:33 -0800171 .register(DefaultOperationId.class)
172 .register(OperationType.class)
Jordan Halterman2bf177c2017-06-29 01:49:08 -0700173 .register(ReadConsistency.class)
174 .register(ArrayList.class)
175 .register(HashSet.class)
176 .register(DefaultRaftMember.class)
177 .register(MemberId.class)
178 .register(RaftMember.Type.class)
Jordan Halterman2bf177c2017-06-29 01:49:08 -0700179 .register(Instant.class)
180 .register(Configuration.class)
Jordan Halterman2c045992018-03-20 21:33:00 -0700181 .register(PropagationStrategy.class)
Jordan Halterman2bf177c2017-06-29 01:49:08 -0700182 .build("RaftStorage");
183
184 private StorageNamespaces() {
185 }
186}