blob: b923df71fa2aa356224be5cdcfb95a33a5d4b478 [file] [log] [blame]
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -07001package org.onlab.onos.store.serializers;
2
3import org.onlab.packet.IpAddress;
4import com.esotericsoftware.kryo.Kryo;
5import com.esotericsoftware.kryo.Serializer;
6import com.esotericsoftware.kryo.io.Input;
7import com.esotericsoftware.kryo.io.Output;
8
9/**
10 * Kryo Serializer for {@link IpAddress}.
11 */
12public class IpAddressSerializer extends Serializer<IpAddress> {
13
14 /**
15 * Creates {@link IpAddress} serializer instance.
16 */
17 public IpAddressSerializer() {
18 // non-null, immutable
19 super(false, true);
20 }
21
22 @Override
23 public void write(Kryo kryo, Output output,
24 IpAddress object) {
25 byte[] octs = object.toOctets();
26 output.writeInt(octs.length);
27 output.writeBytes(octs);
28 output.writeInt(object.prefixLength());
29 }
30
31 @Override
32 public IpAddress read(Kryo kryo, Input input,
33 Class<IpAddress> type) {
34 int octLen = input.readInt();
35 byte[] octs = new byte[octLen];
36 input.read(octs);
37 int prefLen = input.readInt();
38 return IpAddress.valueOf(octs, prefLen);
39 }
40
41}