/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.communication.transport.jms.common;
import javax.jms.ConnectionFactory;
import de.rcenvironment.core.communication.channel.ServerContactPoint;
import de.rcenvironment.core.communication.model.NetworkContactPoint;
/**
* Abstract factory to provide objects instances that depend on a specific JMS implementation.
*
* @author Robert Mischke
*/
public interface JmsArtifactFactory {
/**
* Creates a new {@link JmsBroker} for the given {@link ServerContactPoint}. The broker is not
* automatically started; call {@link JmsBroker#start()} for this.
*
* @param scp the {@link ServerContactPoint} to attach to (which usually translates to listening
* to a network port)
* @param remoteInitiatedConnectionFactory the connection factory for "inverse" or "passive"
* connections that are created after remote nodes have made their "active" connections
* @return the new broker instance
*/
JmsBroker createBroker(ServerContactPoint scp, RemoteInitiatedMessageChannelFactory remoteInitiatedConnectionFactory);
/**
* Creates a JMS connection factory towards the given {@link NetworkContactPoint}.
*
* @param ncp the {@link NetworkContactPoint} describing the destination
* @return the JMS {@link ConnectionFactory}
*/
ConnectionFactory createConnectionFactory(NetworkContactPoint ncp);
}