blob: 9874543bed9f658ba1927ca46ce75d2a23a00c32 [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 */
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -07008public interface PayloadSerializer {
Madan Jampaniab6d3112014-10-02 16:30:14 -07009
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 /**
Yuta HIGUCHIcad78e92014-10-06 17:58:36 -070027 * Encodes the specified POJO into a byte buffer.
Madan Jampani86ed0552014-10-03 16:45:42 -070028 *
Yuta HIGUCHIcad78e92014-10-06 17:58:36 -070029 * @param data POJO to be encoded
Madan Jampani86ed0552014-10-03 16:45:42 -070030 * @param buffer to write serialized bytes
31 */
Yuta HIGUCHIcad78e92014-10-06 17:58:36 -070032 public void encode(final Object data, ByteBuffer buffer);
Madan Jampani86ed0552014-10-03 16:45:42 -070033
34 /**
Yuta HIGUCHIcad78e92014-10-06 17:58:36 -070035 * Decodes the specified byte buffer to a POJO.
Madan Jampani86ed0552014-10-03 16:45:42 -070036 *
Yuta HIGUCHIcad78e92014-10-06 17:58:36 -070037 * @param buffer bytes to be decoded
38 * @return POJO
Madan Jampani86ed0552014-10-03 16:45:42 -070039 */
Yuta HIGUCHIcad78e92014-10-06 17:58:36 -070040 public <T> T decode(final ByteBuffer buffer);
Madan Jampaniab6d3112014-10-02 16:30:14 -070041}