blob: dbd88c38cdf3456c5236f222087124bbc5473180 [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
20 public void write(Kryo kryo, Output output, ClusterMessage object) {
21 kryo.writeClassAndObject(output, object.sender());
22 kryo.writeClassAndObject(output, object.subject());
23 // TODO: write bytes serialized using ClusterMessage specified serializer
24 // write serialized payload size
25 //output.writeInt(...);
26 // write serialized payload
27 //output.writeBytes(...);
28 }
29
30 @Override
31 public ClusterMessage read(Kryo kryo, Input input,
32 Class<ClusterMessage> type) {
33 // TODO Auto-generated method stub
34 NodeId sender = (NodeId) kryo.readClassAndObject(input);
35 MessageSubject subject = (MessageSubject) kryo.readClassAndObject(input);
36 int size = input.readInt();
37 byte[] payloadBytes = input.readBytes(size);
38 // TODO: deserialize payload using ClusterMessage specified serializer
39 Object payload = null;
40 return new ClusterMessage(sender, subject, payload);
41 }
42
43}