package htsjdk.samtools.seekablestream;
import java.io.IOException;
import java.net.URL;
/**
* Factory for creating {@link SeekableStream}s based on URLs/paths.
* Implementations can be set as the default with {@link SeekableStreamFactory#setInstance(ISeekableStreamFactory)}
* @author jacob
* @date 2013-Oct-24
*/
public interface ISeekableStreamFactory {
public SeekableStream getStreamFor(URL url) throws IOException;
public SeekableStream getStreamFor(String path) throws IOException;
/**
* Return a buffered {@code SeekableStream} which wraps the input {@code stream}
* using the default buffer size
* @param stream
* @return
*/
public SeekableStream getBufferedStream(SeekableStream stream);
/**
* Return a buffered {@code SeekableStream} which wraps the input {@code stream}
* @param stream
* @param bufferSize
* @return
*/
public SeekableStream getBufferedStream(SeekableStream stream, int bufferSize);
}