/* * Created on 19.02.2004 * */ package multimonster.transporter.plugin; import org.apache.log4j.Logger; import multimonster.common.pipe.Pipe; import multimonster.common.pipe.PipeClosedException; import multimonster.transporter.TransporterPlugin; import multimonster.transporter.exceptions.TransporterException; /** * Takes data on the Pipe and passes the data to the converter. * No control actions are implemented. * * @author J�rg Meier * */ public class SimpleInputTransporter extends TransporterPlugin { private Logger log; private Pipe pipeFromMediaProxy; private Pipe pipeToConverter; /** * constructs a TestPlugIn * */ public SimpleInputTransporter(){ this.log = Logger.getLogger(this.getClass()); log.debug("SimpleInputTransporter created."); } /* (non-Javadoc) * @see multimonster.transporter.TransporterPlugin#serveRequest(multimonster.common.Pipe, multimonster.common.Pipe, multimonster.common.MOIdentifier, multimonster.common.Format) */ public void setPipes(Pipe pipeFromMediaProxy, Pipe pipeToConverter) throws TransporterException { String errorText = ""; if (pipeFromMediaProxy == null) { errorText = "pipeFromMediaProxy is null - aborting."; log.error(errorText); throw new TransporterException(errorText); } else if (pipeToConverter == null) { errorText = "pipeToConverter is null - aborting."; log.error(errorText); throw new TransporterException(errorText); } this.pipeFromMediaProxy = pipeFromMediaProxy; this.pipeToConverter = pipeToConverter; log.debug("Got Pipes for working."); } /* (non-Javadoc) * @see java.lang.Runnable#run() */ public void run() { int read_bytes_counter = 0; int write_bytes_counter = 0; byte[] buffer = null; //get the segment-size to read out of pipe int PIPE_SEGMENT_SIZE = Pipe.getPipeSegmentSize(); log.debug("Starting work."); while (true) { // read data from proxy try { buffer = pipeFromMediaProxy.read(PIPE_SEGMENT_SIZE); read_bytes_counter += buffer.length; } catch (PipeClosedException e1) { log.debug("pipeFromMediaProxy closed, read " +write_bytes_counter +" bytes."); break; } // write data to converter try { pipeToConverter.write(buffer); write_bytes_counter += buffer.length; } catch (PipeClosedException e) { log.debug("pipeToConverter closed, wrote " + read_bytes_counter + " bytes."); break; } } log.debug("Transporting finished, wrote " +write_bytes_counter +" bytes, cleaning up..."); pipeFromMediaProxy.close(); pipeToConverter.close(); return; } /* (non-Javadoc) * @see multimonster.transporter.TransporterPlugin#disconnect() */ public void disconnect() { // TODO Auto-generated method stub } }