blob: 8ac6679a9c0523332abded9ef15d036cb46351df [file] [log] [blame]
tom0872a172014-09-23 11:24:26 -07001package org.onlab.onos.store.serializers;
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -07002
3import org.onlab.packet.IpPrefix;
4
5import com.esotericsoftware.kryo.Kryo;
6import com.esotericsoftware.kryo.Serializer;
7import com.esotericsoftware.kryo.io.Input;
8import com.esotericsoftware.kryo.io.Output;
9
10// TODO move to util, etc.
Yuta HIGUCHIc7052012014-09-22 19:11:00 -070011/**
12 * Kryo Serializer for {@link IpPrefix}.
13 */
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070014public final class IpPrefixSerializer extends Serializer<IpPrefix> {
15
Yuta HIGUCHIc7052012014-09-22 19:11:00 -070016 /**
17 * Default constructor.
18 */
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070019 public IpPrefixSerializer() {
20 // non-null, immutable
21 super(false, true);
22 }
23
24 @Override
25 public void write(Kryo kryo, Output output,
26 IpPrefix object) {
27 byte[] octs = object.toOctets();
28 output.writeInt(octs.length);
29 output.writeBytes(octs);
30 output.writeInt(object.prefixLength());
31 }
32
33 @Override
34 public IpPrefix read(Kryo kryo, Input input,
35 Class<IpPrefix> type) {
36 int octLen = input.readInt();
37 byte[] octs = new byte[octLen];
38 input.read(octs);
39 int prefLen = input.readInt();
40 return IpPrefix.valueOf(octs, prefLen);
41 }
42}