blob: 5d04a4679ce26a0ce5945982236252dec566a288 [file] [log] [blame]
tom1d416c52014-09-29 20:55:24 -07001package org.onlab.onos.store.cluster.messaging;
2
Madan Jampani890bc352014-10-01 22:35:29 -07003import org.onlab.onos.cluster.NodeId;
tom1d416c52014-09-29 20:55:24 -07004
Yuta HIGUCHI3f4c2b42014-10-06 16:53:56 -07005// TODO: ClusterMessage should be aware about how to serialize the payload
6// TODO: Should payload type be made generic?
tom1d416c52014-09-29 20:55:24 -07007/**
8 * Base message for cluster-wide communications.
9 */
Madan Jampani890bc352014-10-01 22:35:29 -070010public class ClusterMessage {
tom1d416c52014-09-29 20:55:24 -070011
Madan Jampani890bc352014-10-01 22:35:29 -070012 private final NodeId sender;
tom1d416c52014-09-29 20:55:24 -070013 private final MessageSubject subject;
Madan Jampani890bc352014-10-01 22:35:29 -070014 private final Object payload;
tom1d416c52014-09-29 20:55:24 -070015
16 /**
17 * Creates a cluster message.
18 *
19 * @param subject message subject
20 */
Madan Jampani890bc352014-10-01 22:35:29 -070021 public ClusterMessage(NodeId sender, MessageSubject subject, Object payload) {
22 this.sender = sender;
tom1d416c52014-09-29 20:55:24 -070023 this.subject = subject;
Madan Jampani890bc352014-10-01 22:35:29 -070024 this.payload = payload;
tom1d416c52014-09-29 20:55:24 -070025 }
26
27 /**
Madan Jampani890bc352014-10-01 22:35:29 -070028 * Returns the id of the controller sending this message.
29 *
30 * @return message sender id.
31 */
32 public NodeId sender() {
33 return sender;
34 }
35
36 /**
tom1d416c52014-09-29 20:55:24 -070037 * Returns the message subject indicator.
38 *
39 * @return message subject
40 */
41 public MessageSubject subject() {
42 return subject;
43 }
44
Madan Jampani890bc352014-10-01 22:35:29 -070045 /**
46 * Returns the message payload.
47 *
48 * @return message payload.
49 */
50 public Object payload() {
51 return payload;
tom1d416c52014-09-29 20:55:24 -070052 }
tom1d416c52014-09-29 20:55:24 -070053}