blob: 2bdf5a067df8d2c61876f01ddbe379d897925719 [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 Jampani53e44e62014-10-07 12:39:51 -070014 private final byte[] payload;
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -070015 // TODO: add field specifying Serializer for payload
tom1d416c52014-09-29 20:55:24 -070016
17 /**
18 * Creates a cluster message.
19 *
20 * @param subject message subject
21 */
Madan Jampani53e44e62014-10-07 12:39:51 -070022 public ClusterMessage(NodeId sender, MessageSubject subject, byte[] payload) {
Madan Jampani890bc352014-10-01 22:35:29 -070023 this.sender = sender;
tom1d416c52014-09-29 20:55:24 -070024 this.subject = subject;
Madan Jampani890bc352014-10-01 22:35:29 -070025 this.payload = payload;
tom1d416c52014-09-29 20:55:24 -070026 }
27
28 /**
Madan Jampani890bc352014-10-01 22:35:29 -070029 * Returns the id of the controller sending this message.
30 *
31 * @return message sender id.
32 */
33 public NodeId sender() {
34 return sender;
35 }
36
37 /**
tom1d416c52014-09-29 20:55:24 -070038 * Returns the message subject indicator.
39 *
40 * @return message subject
41 */
42 public MessageSubject subject() {
43 return subject;
44 }
45
Madan Jampani890bc352014-10-01 22:35:29 -070046 /**
47 * Returns the message payload.
48 *
49 * @return message payload.
50 */
Madan Jampani53e44e62014-10-07 12:39:51 -070051 public byte[] payload() {
Madan Jampani890bc352014-10-01 22:35:29 -070052 return payload;
tom1d416c52014-09-29 20:55:24 -070053 }
tom1d416c52014-09-29 20:55:24 -070054}