Decoder.java

package sprout.server.websocket.endpoint;

import sprout.server.exception.DecodeException;

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.nio.ByteBuffer;

public interface Decoder {

    default void init(EndpointConfig endpointConfig) {
    }

    default void destroy() {
    }

    interface Binary<T> extends Decoder {

        T decode(ByteBuffer bytes) throws DecodeException;

        boolean willDecode(ByteBuffer bytes);
    }

    interface BinaryStream<T> extends Decoder {

        T decode(InputStream is) throws DecodeException, IOException;
    }

    interface Text<T> extends Decoder {

        T decode(String s) throws DecodeException;

        boolean willDecode(String s);
    }

    interface TextStream<T> extends Decoder {

        T decode(Reader reader) throws DecodeException, IOException;
    }
}