Encoder.java

package sprout.server.websocket.endpoint;

import sprout.server.exception.EncodeException;

import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
import java.nio.ByteBuffer;

public interface Encoder {
    default void init(EndpointConfig endpointConfig) {
    }

    default void destroy() {
    }

    interface Text<T> extends Encoder {

        String encode(T object) throws EncodeException;
    }

    interface TextStream<T> extends Encoder {

        void encode(T object, Writer writer) throws EncodeException, IOException;
    }

    interface Binary<T> extends Encoder {

        ByteBuffer encode(T object) throws EncodeException;
    }

    interface BinaryStream<T> extends Encoder {

        void encode(T object, OutputStream os) throws EncodeException, IOException;
    }
}