/* * @(#)PushSourceStream.java 1.3 02/08/21 * * Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved. */ package javax.media.protocol; /** * Abstracts a read interface that pushes data. * * * @see PushDataSource * @version 1.3, 02/08/21. */ import java.io.IOException; public interface PushSourceStream extends SourceStream { /** * Read from the stream without blocking. * Returns -1 when the end of the media * is reached. * * @param buffer The buffer to read bytes into. * @param offset The offset into the buffer at which to begin writing data. * @param length The number of bytes to read. * @return The number of bytes read or -1 * when the end of stream is reached. * @throws IOException Thrown if an error occurs while reading * */ public int read(byte[] buffer, int offset, int length) throws IOException; /** * Determine the size of the buffer needed for the data transfer. * This method is provided so that a transfer handler * can determine how much data, at a minimum, will be * available to transfer from the source. * Overflow and data loss is likely to occur if this much * data isn't read at transfer time. * * @return The size of the data transfer. */ public int getMinimumTransferSize(); /** * Register an object to service data transfers to this stream. * <p> * If a handler is already registered when * <CODE>setTransferHandler</CODE> is called, * the handler is replaced; * there can only be one handler at a time. * * @param transferHandler The handler to transfer data to. */ public void setTransferHandler(SourceTransferHandler transferHandler); }