blob: b74f887394de662ec2b3a3ee0e0e775ea395e617 [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 HIGUCHI971addc2014-10-07 23:23:17 -07005// TODO: Should payload type be ByteBuffer?
tom1d416c52014-09-29 20:55:24 -07006/**
7 * Base message for cluster-wide communications.
8 */
Madan Jampani890bc352014-10-01 22:35:29 -07009public class ClusterMessage {
tom1d416c52014-09-29 20:55:24 -070010
Madan Jampani890bc352014-10-01 22:35:29 -070011 private final NodeId sender;
tom1d416c52014-09-29 20:55:24 -070012 private final MessageSubject subject;
Madan Jampani53e44e62014-10-07 12:39:51 -070013 private final byte[] payload;
tom1d416c52014-09-29 20:55:24 -070014
15 /**
16 * Creates a cluster message.
17 *
18 * @param subject message subject
19 */
Madan Jampani53e44e62014-10-07 12:39:51 -070020 public ClusterMessage(NodeId sender, MessageSubject subject, byte[] payload) {
Madan Jampani890bc352014-10-01 22:35:29 -070021 this.sender = sender;
tom1d416c52014-09-29 20:55:24 -070022 this.subject = subject;
Madan Jampani890bc352014-10-01 22:35:29 -070023 this.payload = payload;
tom1d416c52014-09-29 20:55:24 -070024 }
25
26 /**
Madan Jampani890bc352014-10-01 22:35:29 -070027 * Returns the id of the controller sending this message.
28 *
29 * @return message sender id.
30 */
31 public NodeId sender() {
32 return sender;
33 }
34
35 /**
tom1d416c52014-09-29 20:55:24 -070036 * Returns the message subject indicator.
37 *
38 * @return message subject
39 */
40 public MessageSubject subject() {
41 return subject;
42 }
43
Madan Jampani890bc352014-10-01 22:35:29 -070044 /**
45 * Returns the message payload.
46 *
47 * @return message payload.
48 */
Madan Jampani53e44e62014-10-07 12:39:51 -070049 public byte[] payload() {
Madan Jampani890bc352014-10-01 22:35:29 -070050 return payload;
tom1d416c52014-09-29 20:55:24 -070051 }
tom1d416c52014-09-29 20:55:24 -070052}