diff options
Diffstat (limited to 'plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j')
5 files changed, 129 insertions, 40 deletions
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/AbstractConnector.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/AbstractConnector.java index de9bdc4efc..8336bb66ae 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/AbstractConnector.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/AbstractConnector.java @@ -10,11 +10,19 @@ **************************************************************************/ package org.eclipse.internal.net4j.transport; +import static org.eclipse.net4j.transport.Connector.State.CONNECTED; +import static org.eclipse.net4j.transport.Connector.State.CONNECTING; +import static org.eclipse.net4j.transport.Connector.State.DISCONNECTED; +import static org.eclipse.net4j.transport.Connector.State.NEGOTIATING; +import static org.eclipse.net4j.transport.Connector.Type.CLIENT; +import static org.eclipse.net4j.transport.Connector.Type.SERVER; + import org.eclipse.net4j.transport.Buffer; import org.eclipse.net4j.transport.BufferProvider; import org.eclipse.net4j.transport.Channel; import org.eclipse.net4j.transport.Connector; import org.eclipse.net4j.transport.ConnectorCredentials; +import org.eclipse.net4j.transport.ConnectorDescription; import org.eclipse.net4j.transport.ConnectorException; import org.eclipse.net4j.transport.Protocol; import org.eclipse.net4j.transport.ProtocolFactory; @@ -39,7 +47,8 @@ import java.util.concurrent.TimeUnit; /** * @author Eike Stepper */ -public abstract class AbstractConnector extends AbstractLifecycle implements Connector, BufferProvider +public abstract class AbstractConnector<DESCRIPTION extends ConnectorDescription> extends AbstractLifecycle implements + Connector<DESCRIPTION>, BufferProvider { private static final ContextTracer TRACER = new ContextTracer(Net4j.DEBUG_CONNECTOR, AbstractConnector.class); @@ -60,6 +69,8 @@ public abstract class AbstractConnector extends AbstractLifecycle implements Con private int connectorID = getNextConnectorID(); + private DESCRIPTION description; + private ConnectorCredentials credentials; private IRegistry<String, ProtocolFactory> protocolFactoryRegistry; @@ -187,6 +198,16 @@ public abstract class AbstractConnector extends AbstractLifecycle implements Con return getType() == Type.SERVER; } + public DESCRIPTION getDescription() + { + return description; + } + + public void setDescription(DESCRIPTION description) + { + this.description = description; + } + public ConnectorCredentials getCredentials() { return credentials; diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/AbstractTCPConnector.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/AbstractTCPConnector.java index e48fef9f50..5c2e7dc3c2 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/AbstractTCPConnector.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/AbstractTCPConnector.java @@ -12,8 +12,9 @@ package org.eclipse.internal.net4j.transport.tcp; import org.eclipse.net4j.transport.Buffer; import org.eclipse.net4j.transport.Channel; +import org.eclipse.net4j.transport.Connector; import org.eclipse.net4j.transport.ConnectorException; -import org.eclipse.net4j.transport.tcp.TCPConnector; +import org.eclipse.net4j.transport.tcp.TCPConnectorDescription; import org.eclipse.net4j.transport.tcp.TCPSelector; import org.eclipse.net4j.transport.tcp.TCPSelectorListener; import org.eclipse.net4j.util.Net4jUtil; @@ -35,8 +36,8 @@ import java.util.Queue; /** * @author Eike Stepper */ -public abstract class AbstractTCPConnector extends AbstractConnector implements TCPConnector, - TCPSelectorListener.Active +public abstract class AbstractTCPConnector extends AbstractConnector<TCPConnectorDescription> implements + Connector<TCPConnectorDescription>, TCPSelectorListener.Active { private static final ContextTracer TRACER = new ContextTracer(Net4j.DEBUG_CONNECTOR, AbstractTCPConnector.class); diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/ClientTCPConnectorImpl.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/ClientTCPConnectorImpl.java index f645629767..0f91a63559 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/ClientTCPConnectorImpl.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/ClientTCPConnectorImpl.java @@ -18,34 +18,10 @@ import java.net.InetSocketAddress; */ public class ClientTCPConnectorImpl extends AbstractTCPConnector { - private String host; - - private int port = DEFAULT_PORT; - public ClientTCPConnectorImpl() { } - public String getHost() - { - return host; - } - - public void setHost(String host) - { - this.host = host; - } - - public int getPort() - { - return port; - } - - public void setPort(int port) - { - this.port = port; - } - public Type getType() { return Type.CLIENT; @@ -54,16 +30,16 @@ public class ClientTCPConnectorImpl extends AbstractTCPConnector @Override public String toString() { - return "ClientTCPConnector[" + host + ":" + port + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + return "ClientTCPConnector[" + getDescription() + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } @Override protected void onAboutToActivate() throws Exception { super.onAboutToActivate(); - if (host == null || host.length() == 0) + if (getDescription() == null) { - throw new IllegalArgumentException("host == null || host.length() == 0"); //$NON-NLS-1$ + throw new IllegalStateException("getDescription() == null"); //$NON-NLS-1$ } } @@ -71,8 +47,8 @@ public class ClientTCPConnectorImpl extends AbstractTCPConnector protected void onActivate() throws Exception { super.onActivate(); - InetAddress addr = InetAddress.getByName(host); - InetSocketAddress sAddr = new InetSocketAddress(addr, port); + InetAddress addr = InetAddress.getByName(getDescription().getHost()); + InetSocketAddress sAddr = new InetSocketAddress(addr, getDescription().getPort()); getSocketChannel().connect(sAddr); } } diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/TCPAcceptorImpl.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/TCPAcceptorImpl.java index 21ac6b62e0..16d42567ce 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/TCPAcceptorImpl.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/TCPAcceptorImpl.java @@ -12,10 +12,10 @@ package org.eclipse.internal.net4j.transport.tcp; import org.eclipse.net4j.transport.Buffer; import org.eclipse.net4j.transport.BufferProvider; +import org.eclipse.net4j.transport.Connector; import org.eclipse.net4j.transport.ProtocolFactory; import org.eclipse.net4j.transport.tcp.TCPAcceptor; import org.eclipse.net4j.transport.tcp.TCPAcceptorListener; -import org.eclipse.net4j.transport.tcp.TCPConnector; import org.eclipse.net4j.transport.tcp.TCPSelector; import org.eclipse.net4j.transport.tcp.TCPSelectorListener; import org.eclipse.net4j.util.Net4jUtil; @@ -63,7 +63,7 @@ public class TCPAcceptorImpl extends AbstractLifecycle implements TCPAcceptor, B private ServerSocketChannel serverSocketChannel; - private Set<TCPConnector> acceptedConnectors = new HashSet(0); + private Set<Connector> acceptedConnectors = new HashSet(0); /** * An optional executor to be used by the {@link Channel}s to process their @@ -158,15 +158,15 @@ public class TCPAcceptorImpl extends AbstractLifecycle implements TCPAcceptor, B this.listenPort = listenPort; } - public TCPConnector[] getAcceptedConnectors() + public Connector[] getAcceptedConnectors() { - ArrayList<TCPConnector> result; + ArrayList<Connector> result; synchronized (acceptedConnectors) { result = new ArrayList(acceptedConnectors); } - return result.toArray(new TCPConnector[result.size()]); + return result.toArray(new Connector[result.size()]); } public void addAcceptorListener(TCPAcceptorListener listener) @@ -271,7 +271,7 @@ public class TCPAcceptorImpl extends AbstractLifecycle implements TCPAcceptor, B bufferProvider, selector); } - protected void fireConnectorAccepted(TCPConnector connector) + protected void fireConnectorAccepted(Connector connector) { for (TCPAcceptorListener listener : listeners) { @@ -329,7 +329,7 @@ public class TCPAcceptorImpl extends AbstractLifecycle implements TCPAcceptor, B @Override protected void onDeactivate() throws Exception { - for (TCPConnector connector : getAcceptedConnectors()) + for (Connector connector : getAcceptedConnectors()) { LifecycleUtil.deactivate(connector); } diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/TCPConnectorDescriptionImpl.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/TCPConnectorDescriptionImpl.java new file mode 100644 index 0000000000..fa4b5ed179 --- /dev/null +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/TCPConnectorDescriptionImpl.java @@ -0,0 +1,91 @@ +/*************************************************************************** + * Copyright (c) 2004, 2005, 2006 Eike Stepper, Germany. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + **************************************************************************/ +package org.eclipse.internal.net4j.transport.tcp; + +import org.eclipse.net4j.transport.tcp.TCPConnectorDescription; +import org.eclipse.net4j.util.ObjectUtil; + +import java.io.Serializable; +import java.text.MessageFormat; + +/** + * @author Eike Stepper + */ +public class TCPConnectorDescriptionImpl implements TCPConnectorDescription, Cloneable, Serializable +{ + private static final long serialVersionUID = 1L; + + private String host; + + private int port = DEFAULT_PORT; + + public TCPConnectorDescriptionImpl() + { + } + + public String getHost() + { + return host; + } + + public void setHost(String host) + { + this.host = host; + } + + public int getPort() + { + return port; + } + + public void setPort(int port) + { + this.port = port; + } + + public String getDisplayName() + { + return MessageFormat.format("{0}:{1}", host, port); + } + + @Override + protected Object clone() throws CloneNotSupportedException + { + TCPConnectorDescriptionImpl description = new TCPConnectorDescriptionImpl(); + description.setHost(host); + description.setPort(port); + return description; + } + + @Override + public boolean equals(Object obj) + { + if (obj instanceof TCPConnectorDescription) + { + TCPConnectorDescription that = (TCPConnectorDescription)obj; + return this.port == that.getPort() && ObjectUtil.equals(this.host, that.getHost()); + } + + return false; + } + + @Override + public int hashCode() + { + return port ^ host.hashCode(); + } + + @Override + public String toString() + { + return getDisplayName(); + } +} |