001    /**
002     * Copyright 2007 Mike Kroutikov.
003     *
004     * This program is free software; you can redistribute it and/or modify
005     *   it under the terms of the Lesser GNU General Public License as 
006     *   published by the Free Software Foundation; either version 3 of
007     *   the License, or (at your option) any later version.
008     *
009     *   This program is distributed in the hope that it will be useful,
010     *   but WITHOUT ANY WARRANTY; without even the implied warranty of
011     *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
012     *   Lesser GNU General Public License for more details.
013     *
014     *   You should have received a copy of the Lesser GNU General Public License
015     *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
016     */
017    
018    package org.otfeed.protocol.connector;
019    
020    import java.io.IOException;
021    
022    import org.otfeed.OTConnectionSpec;
023    import org.otfeed.event.IConnectionStateListener;
024    
025    /**
026     * Low-level communication interface: producer of session streamer service.
027     */
028    public interface ISessionStreamerFactory {
029    
030            /**
031             * Creates a connection.
032             * This is an asynchronous call, that will not block. To monitor
033             * connection progress, use <code>listener</code> parameter.
034             *
035             * @param spec connection specifications.
036             * @param listener a listener to receive connection state change
037             *        events.
038             */
039            public ISessionStreamer connect(OTConnectionSpec spec, IConnectionStateListener listener)
040                            throws IOException;
041    
042            /**
043             * Shuts down connection factory.
044             * If a connect is in progress, it
045             * will be interrupted.
046             */
047            public void shutdown();
048    }