    001    /*
    002     * Copyright 2009 Red Hat, Inc.
    003     * Red Hat licenses this file to you under the Apache License, version
    004     * 2.0 (the "License"); you may not use this file except in compliance
    005     * with the License.  You may obtain a copy of the License at
    006     *    http://www.apache.org/licenses/LICENSE-2.0
    007     * Unless required by applicable law or agreed to in writing, software
    008     * distributed under the License is distributed on an "AS IS" BASIS,
    009     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
    010     * implied.  See the License for the specific language governing
    011     * permissions and limitations under the License.
    012     */
    013    package org.hornetq.spi.core.remoting;
    014
    015    import java.util.Map;
    016
    017    /**
    018     * A Connector is used by the client for creating and controlling a connection.
    019     *
    020     * @author <a href="mailto:tim.fox@jboss.com">Tim Fox</a>
    021     */
    022    public interface Connector
    023    {
    024       /**
    025        * starts the connector
    026        */
    027       void start();
    028
    029       /**
    030        * closes the connector
    031        */
    032       void close();
    033
    034       /**
    035        * returns true if the connector is started, oterwise false.
    036        *
    037        * @return true if the connector is started
    038        */
    039       boolean isStarted();
    040
    041       /**
    042        * Create and return a connection from this connector.
    043        * <p/>
    044        * This method must NOT throw an exception if it fails to create the connection
    045        * (e.g. network is not available), in this case it MUST return null
    046        *
    047        * @return The connection, or null if unable to create a connection (e.g. network is unavailable)
    048        */
    049       Connection createConnection();
    050
    051       /**
    052        * If the configuration is equivalent to this connector, which means
    053        * if the parameter configuration is used to create a connection to a target
    054        * node, it will be the same node as of the connections made with this connector.
    055        * @param configuration
    056        * @return true means the configuration is equivalent to the connector. false otherwise.
    057        */
    058       boolean isEquivalent(Map<String, Object> configuration);
    059    }