/* * 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); } }