blob: 5dc310b8bd2b90cbec5e1b9d0d033ef988ec021c [file] [log] [blame]
tom0872a172014-09-23 11:24:26 -07001package org.onlab.onos.store.serializers;
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -07002
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -07003import org.onlab.onos.net.DefaultPort;
4import org.onlab.onos.net.Element;
5import org.onlab.onos.net.PortNumber;
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -07006
7import com.esotericsoftware.kryo.Kryo;
8import com.esotericsoftware.kryo.Serializer;
9import com.esotericsoftware.kryo.io.Input;
10import com.esotericsoftware.kryo.io.Output;
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070011
Yuta HIGUCHIc7052012014-09-22 19:11:00 -070012/**
13 * Kryo Serializer for {@link DefaultPort}.
14 */
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070015public final class DefaultPortSerializer extends
16 Serializer<DefaultPort> {
17
Yuta HIGUCHIc7052012014-09-22 19:11:00 -070018 /**
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070019 * Creates {@link DefaultPort} serializer instance.
Yuta HIGUCHIc7052012014-09-22 19:11:00 -070020 */
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070021 public DefaultPortSerializer() {
22 // non-null, immutable
23 super(false, true);
24 }
25
26 @Override
27 public void write(Kryo kryo, Output output, DefaultPort object) {
28 kryo.writeClassAndObject(output, object.element());
29 kryo.writeObject(output, object.number());
30 output.writeBoolean(object.isEnabled());
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070031 }
32
33 @Override
34 public DefaultPort read(Kryo kryo, Input input,
35 Class<DefaultPort> type) {
36 Element element = (Element) kryo.readClassAndObject(input);
37 PortNumber number = kryo.readObject(input, PortNumber.class);
38 boolean isEnabled = input.readBoolean();
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070039
Jonathan Hart32129f22014-09-23 11:23:38 -070040 return new DefaultPort(element, number, isEnabled);
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070041 }
42}