blob: 56494b27ca80cb84a23ae197c1ae5bae220f2f6a [file] [log] [blame]
Madan Jampaniab6d3112014-10-02 16:30:14 -07001package org.onlab.netty;
2
Madan Jampani86ed0552014-10-03 16:45:42 -07003import java.nio.ByteBuffer;
4
Madan Jampaniab6d3112014-10-02 16:30:14 -07005/**
6 * Interface for encoding/decoding message payloads.
7 */
8public interface Serializer {
9
10 /**
11 * Decodes the specified byte array to a POJO.
12 *
13 * @param data byte array.
14 * @return POJO
15 */
Madan Jampani86ed0552014-10-03 16:45:42 -070016 public <T> T decode(byte[] data);
Madan Jampaniab6d3112014-10-02 16:30:14 -070017
18 /**
19 * Encodes the specified POJO into a byte array.
20 *
21 * @param data POJO to be encoded
22 * @return byte array.
23 */
Madan Jampani86ed0552014-10-03 16:45:42 -070024 public byte[] encode(Object data);
Madan Jampaniab6d3112014-10-02 16:30:14 -070025
Madan Jampani86ed0552014-10-03 16:45:42 -070026 /**
27 * Serializes the specified object into bytes using one of the
28 * pre-registered serializers.
29 *
30 * @param obj object to be serialized
31 * @param buffer to write serialized bytes
32 */
33 public void serialize(final Object obj, ByteBuffer buffer);
34
35 /**
36 * Deserializes the specified bytes into an object using one of the
37 * pre-registered serializers.
38 *
39 * @param buffer bytes to be deserialized
40 * @return deserialized object
41 */
42 public <T> T deserialize(final ByteBuffer buffer);
Madan Jampaniab6d3112014-10-02 16:30:14 -070043}