blob: 2e92692828225823fa54829134e088d2f2dbc4a1 [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
Yuta HIGUCHIc7052012014-09-22 19:11:00 -070010/**
11 * Kryo Serializer for {@link IpPrefix}.
12 */
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070013public final class IpPrefixSerializer extends Serializer<IpPrefix> {
14
Yuta HIGUCHIc7052012014-09-22 19:11:00 -070015 /**
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070016 * Creates {@link IpPrefix} serializer instance.
Yuta HIGUCHIc7052012014-09-22 19:11:00 -070017 */
Yuta HIGUCHI24a086b2014-09-21 23:28:41 -070018 public IpPrefixSerializer() {
19 // non-null, immutable
20 super(false, true);
21 }
22
23 @Override
24 public void write(Kryo kryo, Output output,
25 IpPrefix object) {
26 byte[] octs = object.toOctets();
27 output.writeInt(octs.length);
28 output.writeBytes(octs);
29 output.writeInt(object.prefixLength());
30 }
31
32 @Override
33 public IpPrefix read(Kryo kryo, Input input,
34 Class<IpPrefix> type) {
35 int octLen = input.readInt();
36 byte[] octs = new byte[octLen];
37 input.read(octs);
38 int prefLen = input.readInt();
39 return IpPrefix.valueOf(octs, prefLen);
40 }
41}