blob: 280da1e8faa6b43855d8f6d6265f1a63f7ce5269 [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
Yuta HIGUCHIb0995df2014-10-15 23:13:42 -070023 public void write(Kryo kryo, Output output, IpAddress object) {
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070024 byte[] octs = object.toOctets();
25 output.writeInt(octs.length);
26 output.writeBytes(octs);
27 output.writeInt(object.prefixLength());
28 }
29
30 @Override
Yuta HIGUCHIb0995df2014-10-15 23:13:42 -070031 public IpAddress read(Kryo kryo, Input input, Class<IpAddress> type) {
32 final int octLen = input.readInt();
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070033 byte[] octs = new byte[octLen];
Yuta HIGUCHIb0995df2014-10-15 23:13:42 -070034 input.readBytes(octs);
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070035 int prefLen = input.readInt();
36 return IpAddress.valueOf(octs, prefLen);
37 }
38
39}