001/*
002 *                    BioJava development code
003 *
004 * This code may be freely distributed and modified under the
005 * terms of the GNU Lesser General Public Licence.  This should
006 * be distributed with the code.  If you do not have a copy,
007 * see:
008 *
009 *      http://www.gnu.org/copyleft/lesser.html
010 *
011 * Copyright for this code is held jointly by the individual
012 * authors.  These should be listed in @author doc comments.
013 *
014 * For more information on the BioJava project and its aims,
015 * or to join the biojava-l mailing list, visit the home page
016 * at:
017 *
018 *      http://www.biojava.org/
019 *
020 */
021
022/*
023 *    InputHandler.java
024 */
025package org.biojava.utils.process;
026
027import java.io.OutputStream;
028
029/**
030 * Interface to a {@linkplain java.lang.Runnable threadable} input handler for
031 * an {@linkplain org.biojava.utils.process.ExternalProcess external process}. 
032 * The input handler is used to write the
033 * {@linkplain java.lang.Process#getInputStream() STDIN} input of an
034 * external process. 
035 * @author <a href="mailto:Martin.Szugat@GMX.net">Martin Szugat</a>
036 * @version $Revision$
037 */
038public interface InputHandler extends Runnable {
039
040        /**
041     * Sets the output stream. The input for the external process is read from
042     * this output stream.
043         * @param output the output stream. May be <code>null</code>.
044         */
045        void setOutput(OutputStream output);
046        
047    /**
048     * Gets the output stream. The input for the external process is read from
049     * this output stream.
050     * @return the output stream. May be <code>null</code>.
051     */
052    /*@pure@*/ OutputStream getOutput();
053}