blob: e20b4a6885b3aae4fe52217db438f939f94fbdd8 [file] [log] [blame]
Yuta HIGUCHIfa891c92014-10-09 15:21:40 -07001package org.onlab.onos.store.serializers;
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -07002
3import org.onlab.onos.cluster.NodeId;
4import org.onlab.onos.store.cluster.messaging.ClusterMessage;
5import org.onlab.onos.store.cluster.messaging.MessageSubject;
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -07006import com.esotericsoftware.kryo.Kryo;
7import com.esotericsoftware.kryo.Serializer;
8import com.esotericsoftware.kryo.io.Input;
9import com.esotericsoftware.kryo.io.Output;
10
11public final class ClusterMessageSerializer extends Serializer<ClusterMessage> {
12
Yuta HIGUCHI3e0b6512014-10-07 17:43:56 -070013 /**
14 * Creates a serializer for {@link ClusterMessage}.
15 */
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -070016 public ClusterMessageSerializer() {
17 // does not accept null
18 super(false);
19 }
20
21 @Override
Madan Jampani53e44e62014-10-07 12:39:51 -070022 public void write(Kryo kryo, Output output, ClusterMessage message) {
23 kryo.writeClassAndObject(output, message.sender());
24 kryo.writeClassAndObject(output, message.subject());
25 output.writeInt(message.payload().length);
26 output.writeBytes(message.payload());
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -070027 }
28
29 @Override
30 public ClusterMessage read(Kryo kryo, Input input,
31 Class<ClusterMessage> type) {
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -070032 NodeId sender = (NodeId) kryo.readClassAndObject(input);
33 MessageSubject subject = (MessageSubject) kryo.readClassAndObject(input);
Madan Jampani53e44e62014-10-07 12:39:51 -070034 int payloadSize = input.readInt();
35 byte[] payload = input.readBytes(payloadSize);
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -070036 return new ClusterMessage(sender, subject, payload);
37 }
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -070038}