/* Generated by Together */
package multimonster.transporter;
import multimonster.common.*;
import multimonster.common.Proxy;
import multimonster.common.media.*;
import multimonster.common.pipe.*;
import multimonster.common.plugin.*;
import multimonster.common.setting.*;
import multimonster.transporter.exceptions.TransporterException;
/**
* The transporter component.
* It manages the dataflow in the system. The transporter takes control
* commands from the proxy and does the appropriate operation
* (e. g. stop, pause, ...)
*
* @author J�rg Meier
*
*/
public interface TransporterFacade extends SettingListener, Pluggable {
/**
* Prepares the system for an output operation with the given
* parameters.
*
* When the call returns the Pipe contains the data requested to read.
*
* @param mOId
* @param fId
* @param protocolId
* @return
* @throws TransporterException
*/
Pipe output(MOIdentifier mOId, FormatId fId, ProtocolId protocolId) throws TransporterException;
/**
* Prepares the system for an input operation.
*
* The caller can write the data in the returned Pipe.
*
* @param mOId
* @param protocolId
* @return
* @throws TransporterException
*/
Pipe input(MOIdentifier mOId, ProtocolId protocolId) throws TransporterException;
/**
* NOT IMPLEMENTED
*
* @param proxy
* @return
*/
boolean registerProxy(Proxy proxy);
/**
* NOT IMPLEMENTED
*
* @param proxy
* @return
*/
boolean releaseProxy(Proxy proxy);
}