/*******************************************************************************
 * Copyright (c) 2009, 2019 Xored Software Inc and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-v20.html
 *
 * Contributors:
 *     Xored Software Inc - initial API and implementation and/or initial documentation
 *******************************************************************************/
package org.eclipse.rcptt.ecl.client.tcp;

import java.io.IOException;
import java.net.InetAddress;

import org.eclipse.rcptt.ecl.runtime.ISession;

public enum EclTcpClientManager {

	Instance;

	public final static int DEFAULT_PORT = EclTcpClientPlugin.DEFAULT_PORT;

	public ISession startClientSession(InetAddress address, int port)
			throws IOException {
		return new EclTcpSession(address, port);
	}
}
