blob: 2aecd0b04e4ed2834e6f24e9b58097ca6138ac8d [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 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;
Jordan Haltermand3e02d32017-08-28 20:58:24 -070039 final MessageSubject transferSubject;
Jordan Halterman2bf177c2017-06-29 01:49:08 -070040
41 RaftMessageContext(String prefix) {
42 this.prefix = prefix;
43 this.openSessionSubject = getSubject(prefix, "open");
44 this.closeSessionSubject = getSubject(prefix, "close");
45 this.keepAliveSubject = getSubject(prefix, "keep-alive");
46 this.querySubject = getSubject(prefix, "query");
47 this.commandSubject = getSubject(prefix, "command");
48 this.metadataSubject = getSubject(prefix, "metadata");
49 this.joinSubject = getSubject(prefix, "join");
50 this.leaveSubject = getSubject(prefix, "leave");
51 this.configureSubject = getSubject(prefix, "configure");
52 this.reconfigureSubject = getSubject(prefix, "reconfigure");
53 this.installSubject = getSubject(prefix, "install");
54 this.pollSubject = getSubject(prefix, "poll");
55 this.voteSubject = getSubject(prefix, "vote");
56 this.appendSubject = getSubject(prefix, "append");
Jordan Haltermand3e02d32017-08-28 20:58:24 -070057 this.transferSubject = getSubject(prefix, "transfer");
Jordan Halterman2bf177c2017-06-29 01:49:08 -070058 }
59
60 private static MessageSubject getSubject(String prefix, String type) {
61 if (prefix == null) {
62 return new MessageSubject(type);
63 } else {
64 return new MessageSubject(String.format("%s-%s", prefix, type));
65 }
66 }
67
68 /**
69 * Returns the publish subject for the given session.
70 *
71 * @param sessionId the session for which to return the publish subject
72 * @return the publish subject for the given session
73 */
74 MessageSubject publishSubject(long sessionId) {
75 if (prefix == null) {
76 return new MessageSubject(String.format("publish-%d", sessionId));
77 } else {
78 return new MessageSubject(String.format("%s-publish-%d", prefix, sessionId));
79 }
80 }
81
82 /**
83 * Returns the reset subject for the given session.
84 *
85 * @param sessionId the session for which to return the reset subject
86 * @return the reset subject for the given session
87 */
88 MessageSubject resetSubject(long sessionId) {
89 if (prefix == null) {
90 return new MessageSubject(String.format("reset-%d", sessionId));
91 } else {
92 return new MessageSubject(String.format("%s-reset-%d", prefix, sessionId));
93 }
94 }
95}