Madan Jampani | ab6d311 | 2014-10-02 16:30:14 -0700 | [diff] [blame] | 1 | package org.onlab.netty; |
| 2 | |
Madan Jampani | 86ed055 | 2014-10-03 16:45:42 -0700 | [diff] [blame] | 3 | import java.nio.ByteBuffer; |
| 4 | |
Madan Jampani | ab6d311 | 2014-10-02 16:30:14 -0700 | [diff] [blame] | 5 | /** |
| 6 | * Interface for encoding/decoding message payloads. |
| 7 | */ |
Yuta HIGUCHI | 993d7aa | 2014-10-06 22:54:38 -0700 | [diff] [blame^] | 8 | public interface PayloadSerializer { |
Madan Jampani | ab6d311 | 2014-10-02 16:30:14 -0700 | [diff] [blame] | 9 | |
| 10 | /** |
| 11 | * Decodes the specified byte array to a POJO. |
| 12 | * |
| 13 | * @param data byte array. |
| 14 | * @return POJO |
| 15 | */ |
Madan Jampani | 86ed055 | 2014-10-03 16:45:42 -0700 | [diff] [blame] | 16 | public <T> T decode(byte[] data); |
Madan Jampani | ab6d311 | 2014-10-02 16:30:14 -0700 | [diff] [blame] | 17 | |
| 18 | /** |
| 19 | * Encodes the specified POJO into a byte array. |
| 20 | * |
| 21 | * @param data POJO to be encoded |
| 22 | * @return byte array. |
| 23 | */ |
Madan Jampani | 86ed055 | 2014-10-03 16:45:42 -0700 | [diff] [blame] | 24 | public byte[] encode(Object data); |
Madan Jampani | ab6d311 | 2014-10-02 16:30:14 -0700 | [diff] [blame] | 25 | |
Madan Jampani | 86ed055 | 2014-10-03 16:45:42 -0700 | [diff] [blame] | 26 | /** |
Yuta HIGUCHI | cad78e9 | 2014-10-06 17:58:36 -0700 | [diff] [blame] | 27 | * Encodes the specified POJO into a byte buffer. |
Madan Jampani | 86ed055 | 2014-10-03 16:45:42 -0700 | [diff] [blame] | 28 | * |
Yuta HIGUCHI | cad78e9 | 2014-10-06 17:58:36 -0700 | [diff] [blame] | 29 | * @param data POJO to be encoded |
Madan Jampani | 86ed055 | 2014-10-03 16:45:42 -0700 | [diff] [blame] | 30 | * @param buffer to write serialized bytes |
| 31 | */ |
Yuta HIGUCHI | cad78e9 | 2014-10-06 17:58:36 -0700 | [diff] [blame] | 32 | public void encode(final Object data, ByteBuffer buffer); |
Madan Jampani | 86ed055 | 2014-10-03 16:45:42 -0700 | [diff] [blame] | 33 | |
| 34 | /** |
Yuta HIGUCHI | cad78e9 | 2014-10-06 17:58:36 -0700 | [diff] [blame] | 35 | * Decodes the specified byte buffer to a POJO. |
Madan Jampani | 86ed055 | 2014-10-03 16:45:42 -0700 | [diff] [blame] | 36 | * |
Yuta HIGUCHI | cad78e9 | 2014-10-06 17:58:36 -0700 | [diff] [blame] | 37 | * @param buffer bytes to be decoded |
| 38 | * @return POJO |
Madan Jampani | 86ed055 | 2014-10-03 16:45:42 -0700 | [diff] [blame] | 39 | */ |
Yuta HIGUCHI | cad78e9 | 2014-10-06 17:58:36 -0700 | [diff] [blame] | 40 | public <T> T decode(final ByteBuffer buffer); |
Madan Jampani | ab6d311 | 2014-10-02 16:30:14 -0700 | [diff] [blame] | 41 | } |