blob: 2deb86a51c62ee4a51b96c016f80bcfc13dfa996 [file] [log] [blame]
Jordan Halterman2bf177c2017-06-29 01:49:08 -07001/*
2 * Copyright 2017-present 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 */
16package org.onosproject.store.primitives.impl;
17
18import org.onosproject.store.cluster.messaging.MessageSubject;
19
20/**
21 * Protocol message context.
22 */
23final class RaftMessageContext {
24 private final String prefix;
25 final MessageSubject openSessionSubject;
26 final MessageSubject closeSessionSubject;
27 final MessageSubject keepAliveSubject;
28 final MessageSubject querySubject;
29 final MessageSubject commandSubject;
30 final MessageSubject metadataSubject;
31 final MessageSubject joinSubject;
32 final MessageSubject leaveSubject;
33 final MessageSubject configureSubject;
34 final MessageSubject reconfigureSubject;
35 final MessageSubject installSubject;
36 final MessageSubject pollSubject;
37 final MessageSubject voteSubject;
38 final MessageSubject appendSubject;
39
40 RaftMessageContext(String prefix) {
41 this.prefix = prefix;
42 this.openSessionSubject = getSubject(prefix, "open");
43 this.closeSessionSubject = getSubject(prefix, "close");
44 this.keepAliveSubject = getSubject(prefix, "keep-alive");
45 this.querySubject = getSubject(prefix, "query");
46 this.commandSubject = getSubject(prefix, "command");
47 this.metadataSubject = getSubject(prefix, "metadata");
48 this.joinSubject = getSubject(prefix, "join");
49 this.leaveSubject = getSubject(prefix, "leave");
50 this.configureSubject = getSubject(prefix, "configure");
51 this.reconfigureSubject = getSubject(prefix, "reconfigure");
52 this.installSubject = getSubject(prefix, "install");
53 this.pollSubject = getSubject(prefix, "poll");
54 this.voteSubject = getSubject(prefix, "vote");
55 this.appendSubject = getSubject(prefix, "append");
56 }
57
58 private static MessageSubject getSubject(String prefix, String type) {
59 if (prefix == null) {
60 return new MessageSubject(type);
61 } else {
62 return new MessageSubject(String.format("%s-%s", prefix, type));
63 }
64 }
65
66 /**
67 * Returns the publish subject for the given session.
68 *
69 * @param sessionId the session for which to return the publish subject
70 * @return the publish subject for the given session
71 */
72 MessageSubject publishSubject(long sessionId) {
73 if (prefix == null) {
74 return new MessageSubject(String.format("publish-%d", sessionId));
75 } else {
76 return new MessageSubject(String.format("%s-publish-%d", prefix, sessionId));
77 }
78 }
79
80 /**
81 * Returns the reset subject for the given session.
82 *
83 * @param sessionId the session for which to return the reset subject
84 * @return the reset subject for the given session
85 */
86 MessageSubject resetSubject(long sessionId) {
87 if (prefix == null) {
88 return new MessageSubject(String.format("reset-%d", sessionId));
89 } else {
90 return new MessageSubject(String.format("%s-reset-%d", prefix, sessionId));
91 }
92 }
93}