/*
* @(#)DataSink.java 1.10 02/08/21
*
* Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved.
*/
package javax.media;
import java.io.IOException;
/**
* <code>DataSink</code> is the base interface for objects that
* read media content delivered by a <code>DataSource</code>
* and render the media to some destination. The destination is
* specified with a <code>MediaLocator</code>. One example of a <CODE>DataSink</CODE> is a file
* writer object that stores the media in a file.
* <p>
* A <CODE>DataSink</CODE> is created according to the factory mechanism used to create a <CODE>Player</CODE>.
* @see Manager#createDataSink
* @since JMF 2.0
*/
public interface DataSink extends MediaHandler, Controls {
/**
* Sets the output <code>MediaLocator</code> for this <CODE>DataSink</CODE>.
* This method should only be called once; an error is thrown if
* the locator has already been set.
* @param output A <code>MediaLocator</code> that describes where
* the output of this <CODE>DataSink</CODE> goes.
*/
public void setOutputLocator(MediaLocator output);
/**
* Gets the output <code>MediaLocator</code> that describes where
* the output of this <CODE>DataSink</CODE> goes.
* @return The output <code>MediaLocator</code> for this
* <code>DataSink</code>.
*/
public MediaLocator getOutputLocator();
/**
* Initiates data transfer.
* You must call <CODE>open</CODE> before calling the <CODE>start</CODE> method.
*
* @exception IOException If there are IO problems with the source
* when <CODE>start</CODE> is called.
*/
public void start() throws IOException;
/**
* Stops the data transfer.
* If the source has not been connected and started,
* <CODE>stop</CODE> does nothing.
* @exception IOException If there are IO problems with the source
* when <CODE>stop</CODE> is called.
*/
public void stop() throws IOException;
/**
* Opens a connection to the destination described by
* the output <CODE>MediaLocator</CODE>. This method
* establishes a channel between this <CODE>DataSink</CODE> and its destination.
*
* @exception IOException If there are IO problems
* when <CODE>open</CODE> is called.
* @exception SecurityException If there are any security
* violations while attempting to access the destination described
* by the output <CODE>MediaLocator</CODE>.
*/
public void open() throws IOException, SecurityException;
/**
* Closes the connection to the destination described by the
* output <CODE>MediaLocator</CODE>.
* This method frees the resources used to maintain a
* connection to the destination.
* If no resources are in use, <CODE>close</CODE> is ignored.
* If <CODE>stop</CODE> hasn't already been called,
* calling <CODE>close</CODE> stops the data transfer.
* A <CODE>DataSink</CODE> can no longer be used once it has been closed.
*/
public void close();
/*
* Question : it isn't really an error to call getContentType()
* even if connect() has not been called.
*/
/**
* Gets a string that describes the content type of the media
* that this <CODE>DataSink</CODE> is consuming.
* @return A String that contains the name of the content-type.
*/
public String getContentType();
/**
* Adds an event listener for events generated by this <CODE>DataSink</CODE>.
* @param listener The <CODE>DataSinkListener</CODE> to add.
*/
public void addDataSinkListener(javax.media.datasink.DataSinkListener listener);
/**
* Removes the specified event listener from this <CODE>DataSink</CODE>.
* @param listener The <CODE>DataSinkListener</CODE> to remove.
*/
public void removeDataSinkListener(javax.media.datasink.DataSinkListener listener);
}
|