blob: 9f1f1bc7f9ad33d5f3a2b13968d642e26683a8b4 [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;
Jordan Halterman19486e32017-11-02 15:00:06 -070025 final MessageSubject heartbeatSubject;
Jordan Halterman2bf177c2017-06-29 01:49:08 -070026 final MessageSubject openSessionSubject;
27 final MessageSubject closeSessionSubject;
28 final MessageSubject keepAliveSubject;
29 final MessageSubject querySubject;
30 final MessageSubject commandSubject;
31 final MessageSubject metadataSubject;
32 final MessageSubject joinSubject;
33 final MessageSubject leaveSubject;
34 final MessageSubject configureSubject;
35 final MessageSubject reconfigureSubject;
36 final MessageSubject installSubject;
37 final MessageSubject pollSubject;
38 final MessageSubject voteSubject;
39 final MessageSubject appendSubject;
Jordan Halterman6807c8f2017-08-28 20:58:24 -070040 final MessageSubject transferSubject;
Jordan Halterman2bf177c2017-06-29 01:49:08 -070041
42 RaftMessageContext(String prefix) {
43 this.prefix = prefix;
Jordan Halterman19486e32017-11-02 15:00:06 -070044 this.heartbeatSubject = getSubject(prefix, "heartbeat");
Jordan Halterman2bf177c2017-06-29 01:49:08 -070045 this.openSessionSubject = getSubject(prefix, "open");
46 this.closeSessionSubject = getSubject(prefix, "close");
47 this.keepAliveSubject = getSubject(prefix, "keep-alive");
48 this.querySubject = getSubject(prefix, "query");
49 this.commandSubject = getSubject(prefix, "command");
50 this.metadataSubject = getSubject(prefix, "metadata");
51 this.joinSubject = getSubject(prefix, "join");
52 this.leaveSubject = getSubject(prefix, "leave");
53 this.configureSubject = getSubject(prefix, "configure");
54 this.reconfigureSubject = getSubject(prefix, "reconfigure");
55 this.installSubject = getSubject(prefix, "install");
56 this.pollSubject = getSubject(prefix, "poll");
57 this.voteSubject = getSubject(prefix, "vote");
58 this.appendSubject = getSubject(prefix, "append");
Jordan Halterman6807c8f2017-08-28 20:58:24 -070059 this.transferSubject = getSubject(prefix, "transfer");
Jordan Halterman2bf177c2017-06-29 01:49:08 -070060 }
61
62 private static MessageSubject getSubject(String prefix, String type) {
63 if (prefix == null) {
64 return new MessageSubject(type);
65 } else {
66 return new MessageSubject(String.format("%s-%s", prefix, type));
67 }
68 }
69
70 /**
71 * Returns the publish subject for the given session.
72 *
73 * @param sessionId the session for which to return the publish subject
74 * @return the publish subject for the given session
75 */
76 MessageSubject publishSubject(long sessionId) {
77 if (prefix == null) {
78 return new MessageSubject(String.format("publish-%d", sessionId));
79 } else {
80 return new MessageSubject(String.format("%s-publish-%d", prefix, sessionId));
81 }
82 }
83
84 /**
85 * Returns the reset subject for the given session.
86 *
87 * @param sessionId the session for which to return the reset subject
88 * @return the reset subject for the given session
89 */
90 MessageSubject resetSubject(long sessionId) {
91 if (prefix == null) {
92 return new MessageSubject(String.format("reset-%d", sessionId));
93 } else {
94 return new MessageSubject(String.format("%s-reset-%d", prefix, sessionId));
95 }
96 }
97}