blob: 25122f687efa303c4b4d50e694541e8a401e63b8 [file] [log] [blame]
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -07001package org.onlab.onos.store.device.impl;
2
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
12// TODO move to util, etc.
Yuta HIGUCHIc7052012014-09-22 19:11:00 -070013/**
14 * Kryo Serializer for {@link DefaultPort}.
15 */
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070016public final class DefaultPortSerializer extends
17 Serializer<DefaultPort> {
18
Yuta HIGUCHIc7052012014-09-22 19:11:00 -070019 /**
20 * Default constructor.
21 */
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070022 public DefaultPortSerializer() {
23 // non-null, immutable
24 super(false, true);
25 }
26
27 @Override
28 public void write(Kryo kryo, Output output, DefaultPort object) {
29 kryo.writeClassAndObject(output, object.element());
30 kryo.writeObject(output, object.number());
31 output.writeBoolean(object.isEnabled());
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070032 }
33
34 @Override
35 public DefaultPort read(Kryo kryo, Input input,
36 Class<DefaultPort> type) {
37 Element element = (Element) kryo.readClassAndObject(input);
38 PortNumber number = kryo.readObject(input, PortNumber.class);
39 boolean isEnabled = input.readBoolean();
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070040
Jonathan Hart32129f22014-09-23 11:23:38 -070041 return new DefaultPort(element, number, isEnabled);
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070042 }
43}