/*
* Copyright (c) 2005-2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.synapse.transport.passthru.api;
import org.apache.http.nio.NHttpServerEventHandler;
import org.apache.synapse.transport.passthru.config.SourceConfiguration;
import org.apache.synapse.transport.passthru.core.PassThroughListeningIOReactorManager;
import org.apache.synapse.transport.passthru.core.ssl.SSLConfiguration;
import java.net.InetSocketAddress;
/**
* API class for access PassThrough Core Inbound Endpoint management classes
*/
public class PassThroughInboundEndpointHandler {
/**
* Start Endpoint Listen and events related to Endpoint handle by given NHttpServerEventHandler
*
* @param inetSocketAddress Socket Address of the Endpoint need to be start by underlying IOReactor
* @param nHttpServerEventHandler Event Handler for handle events for Endpoint
* @param endpointName Name of the Endpoint
* @return Is Endpoint started successfully
*/
public static boolean startEndpoint(InetSocketAddress inetSocketAddress,
NHttpServerEventHandler nHttpServerEventHandler, String endpointName) {
return PassThroughListeningIOReactorManager.getInstance().startDynamicPTTEndpoint(inetSocketAddress,
nHttpServerEventHandler, endpointName);
}
/**
* Close ListeningEndpoint running on the given port
*
* @param port Port of ListeningEndpoint to be closed
* @return IS successfully closed
*/
public static boolean closeEndpoint(int port) {
return PassThroughListeningIOReactorManager.getInstance().closeDynamicPTTEndpoint(port);
}
/**
* @return Pass Through SourceConfiguration registered by shared IO Reactor of PTT Listener
*/
public static SourceConfiguration getPassThroughSourceConfiguration() throws Exception {
SourceConfiguration sourceConfiguration = PassThroughListeningIOReactorManager.getInstance().
getSharedPassThroughSourceConfiguration();
if (sourceConfiguration != null) {
return sourceConfiguration;
} else {
throw new Exception("PassThroughSharedListenerConfiguration is not initiated correctly when " +
"PassThroughListeners are starting");
}
}
/**
* @return Pass Through SSL SourceConfiguration registered by shared IO Reactor of PTT Listener
*/
public static SourceConfiguration getPassThroughSSLSourceConfiguration() throws Exception {
SourceConfiguration sourceConfiguration = PassThroughListeningIOReactorManager.getInstance().
getSharedSSLPassThroughSourceConfiguration();
if (sourceConfiguration != null) {
return sourceConfiguration;
} else {
throw new Exception("PassThroughSharedListenerConfiguration is not initiated correctly when " +
"SSLPassThroughListeners are starting");
}
}
/**
* Check Whether inbound endpoint is running for a particular port
* @param port port
* @return whether inbound endpoint is running
*/
public static boolean isEndpointRunning(int port) {
return PassThroughListeningIOReactorManager.getInstance().isDynamicEndpointRunning(port);
}
/**
* Start SSL Endpoint Listen and events related to Endpoint handle by given NHttpServerEventHandler
* @param inetSocketAddress Socket Address of the Endpoint need to be start by underlying IOReactor
* @param nHttpServerEventHandler Event Handler for handle events for Endpoint
* @param endpointName Name of the Endpoint
* @param sslConfiguration SSL Configuration
* @return Started or Not
*/
public static boolean startSSLEndpoint(InetSocketAddress inetSocketAddress,
NHttpServerEventHandler nHttpServerEventHandler, String endpointName,
SSLConfiguration sslConfiguration) {
return PassThroughListeningIOReactorManager.getInstance().
startDynamicPTTSSLEndpoint(inetSocketAddress, nHttpServerEventHandler,
endpointName, sslConfiguration);
}
}