blob: f4dadad68169b611c893dd09c1b0e2820d9230e4 [file] [log] [blame]
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -07001package org.onlab.onos.store.serializers;
2
3import org.onlab.onos.cluster.NodeId;
4import org.onlab.onos.store.cluster.messaging.ClusterMessage;
5import org.onlab.onos.store.cluster.messaging.MessageSubject;
6
7import com.esotericsoftware.kryo.Kryo;
8import com.esotericsoftware.kryo.Serializer;
9import com.esotericsoftware.kryo.io.Input;
10import com.esotericsoftware.kryo.io.Output;
11
12public final class ClusterMessageSerializer extends Serializer<ClusterMessage> {
13
14 public ClusterMessageSerializer() {
15 // does not accept null
16 super(false);
17 }
18
19 @Override
Madan Jampani53e44e62014-10-07 12:39:51 -070020 public void write(Kryo kryo, Output output, ClusterMessage message) {
21 kryo.writeClassAndObject(output, message.sender());
22 kryo.writeClassAndObject(output, message.subject());
23 output.writeInt(message.payload().length);
24 output.writeBytes(message.payload());
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -070025 }
26
27 @Override
28 public ClusterMessage read(Kryo kryo, Input input,
29 Class<ClusterMessage> type) {
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -070030 NodeId sender = (NodeId) kryo.readClassAndObject(input);
31 MessageSubject subject = (MessageSubject) kryo.readClassAndObject(input);
Madan Jampani53e44e62014-10-07 12:39:51 -070032 int payloadSize = input.readInt();
33 byte[] payload = input.readBytes(payloadSize);
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -070034 return new ClusterMessage(sender, subject, payload);
35 }
Madan Jampani53e44e62014-10-07 12:39:51 -070036}