001    /*
002     * Created on 16-Apr-2004
003     */
004    package ca.uhn.hl7v2.protocol;
005    
006    import java.io.InputStream;
007    import java.io.OutputStream;
008    
009    /**
010     * A source of input and output streams for use with stream-based 
011     * <code>TransportLayer</code>s.  Implementations should contain the 
012     * necessary information for reconnecting streams as necessary.  For 
013     * example a ServerSocket-based implementation should be able to listen  
014     * for fresh connections and get new streams from them (this must be 
015     * done when refresh() is called).  
016     *  
017     * @author <a href="mailto:bryan.tripp@uhn.on.ca">Bryan Tripp</a>
018     * @version $Revision: 1.1 $ updated on $Date: 2007/02/19 02:24:38 $ by $Author: jamesagnew $
019     */
020    public interface StreamSource {
021    
022        /**
023         * Gets new streams.  This should be called only if one of the streams 
024         * is dead.  
025         * @throws TransportException
026         */
027        public void connect() throws TransportException;
028        
029        /**
030         * Closes streams and underlying connections.  
031         * @throws TransportException
032         */
033        public void disconnect() throws TransportException;
034        
035        /**
036         * @return the stream to which we write outbound messages.   
037         * @throws TransportException
038         */
039        public OutputStream getOutboundStream() throws TransportException;
040    
041        /**
042         * @return the stream to which we expect the remote server to send messages.  
043         * @throws TransportException
044         */
045        public InputStream getInboundStream() throws TransportException;
046        
047    }