package ameba.message.internal;
import org.glassfish.jersey.spi.Contract;
import javax.ws.rs.ConstrainedTo;
import javax.ws.rs.RuntimeType;
import java.io.IOException;
import java.io.OutputStream;
/**
* <p>StreamingProcess interface.</p>
*
* @author icode
*
*/
@Contract
@ConstrainedTo(RuntimeType.SERVER)
public interface StreamingProcess<T> {
/**
* <p>isSupported.</p>
*
* @param entity a {@link java.lang.Object} object.
* @return a boolean.
*/
boolean isSupported(Object entity);
/**
* <p>length.</p>
*
* @param entity a T object.
* @return a long.
* @throws java.io.IOException if any.
*/
long length(T entity) throws IOException;
/**
* <p>write.</p>
*
* @param entity a T object.
* @param output a {@link java.io.OutputStream} object.
* @param pos a {@link java.lang.Long} object.
* @param length a {@link java.lang.Long} object.
* @throws java.io.IOException if any.
*/
void write(T entity, OutputStream output, Long pos, Long length) throws IOException;
}