Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2007-03-22 19:18:46 +0000
committerEike Stepper2007-03-22 19:18:46 +0000
commit3eb59e513278b894153bf601911e788363a39575 (patch)
tree57f255e576828f4c973a87dc91eda94ed45f33a1 /plugins/org.eclipse.net4j.tcp
parent3ef517a5167306a360c18c97e7365ac1d2aac80d (diff)
downloadcdo-3eb59e513278b894153bf601911e788363a39575.tar.gz
cdo-3eb59e513278b894153bf601911e788363a39575.tar.xz
cdo-3eb59e513278b894153bf601911e788363a39575.zip
*** empty log message ***
Diffstat (limited to 'plugins/org.eclipse.net4j.tcp')
-rw-r--r--plugins/org.eclipse.net4j.tcp/META-INF/MANIFEST.MF7
-rw-r--r--plugins/org.eclipse.net4j.tcp/build.properties3
-rw-r--r--plugins/org.eclipse.net4j.tcp/plugin.xml18
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ControlChannel.java (renamed from plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ControlChannelImpl.java)12
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptor.java (renamed from plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorImpl.java)85
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorFactory.java60
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPClientConnector.java (renamed from plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ClientTCPConnectorImpl.java)19
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnector.java (renamed from plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/AbstractTCPConnector.java)51
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnectorFactory.java78
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnectorFactoryImpl.java30
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPSelector.java (renamed from plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPSelectorImpl.java)22
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPSelectorFactory.java (renamed from plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorFactoryImpl.java)18
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPSelectorInjector.java47
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPServerConnector.java (renamed from plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ServerTCPConnectorImpl.java)4
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPAcceptor.java (renamed from plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPAcceptor.java)2
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPConnector.java (renamed from plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPConnector.java)2
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPConstants.java (renamed from plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPConstants.java)2
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPSelector.java (renamed from plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPSelector.java)6
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPSelectorListener.java (renamed from plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPSelectorListener.java)14
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPUtil.java60
20 files changed, 321 insertions, 219 deletions
diff --git a/plugins/org.eclipse.net4j.tcp/META-INF/MANIFEST.MF b/plugins/org.eclipse.net4j.tcp/META-INF/MANIFEST.MF
index c304620bed..cbe248a970 100644
--- a/plugins/org.eclipse.net4j.tcp/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.net4j.tcp/META-INF/MANIFEST.MF
@@ -1,14 +1,15 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.net4j.tcp
+Bundle-SymbolicName: org.eclipse.net4j.tcp;singleton:=true
Bundle-Version: 0.8.0.qualifier
Bundle-Activator: org.eclipse.net4j.internal.tcp.bundle.TCP$Activator
Bundle-Vendor: %providerName
-Require-Bundle: org.eclipse.net4j;visibility:=reexport
-Eclipse-LazyStart: true
Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.core.runtime;resolution:=optional,
+ org.eclipse.net4j;visibility:=reexport
Import-Package: org.osgi.framework;version="1.3.0";resolution:=optional
Export-Package: org.eclipse.net4j.internal.tcp;version="0.8.0",
org.eclipse.net4j.internal.tcp.bundle;version="0.8.0",
org.eclipse.net4j.tcp;version="0.8.0"
+Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.net4j.tcp/build.properties b/plugins/org.eclipse.net4j.tcp/build.properties
index d801b47a47..5e316ac59f 100644
--- a/plugins/org.eclipse.net4j.tcp/build.properties
+++ b/plugins/org.eclipse.net4j.tcp/build.properties
@@ -3,4 +3,5 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
.options,\
- plugin.properties
+ plugin.properties,\
+ plugin.xml
diff --git a/plugins/org.eclipse.net4j.tcp/plugin.xml b/plugins/org.eclipse.net4j.tcp/plugin.xml
new file mode 100644
index 0000000000..c57536b58b
--- /dev/null
+++ b/plugins/org.eclipse.net4j.tcp/plugin.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+
+<plugin>
+
+ <extension
+ point="org.eclipse.net4j.factories">
+ <factory
+ class="org.eclipse.net4j.internal.tcp.TCPAcceptorFactory"
+ productGroup="org.eclipse.net4j.acceptors"
+ type="tcp"/>
+ <factory
+ class="org.eclipse.net4j.internal.tcp.TCPConnectorFactory"
+ productGroup="org.eclipse.net4j.connectors"
+ type="tcp"/>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ControlChannelImpl.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ControlChannel.java
index 5b22de29d8..f6ebc3600a 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ControlChannelImpl.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ControlChannel.java
@@ -24,7 +24,7 @@ import java.nio.ByteBuffer;
/**
* @author Eike Stepper
*/
-public final class ControlChannelImpl extends Channel
+public final class ControlChannel extends Channel
{
public static final short CONTROL_CHANNEL_ID = -1;
@@ -40,11 +40,11 @@ public final class ControlChannelImpl extends Channel
public static final byte FAILURE = 0;
- private static final ContextTracer TRACER = new ContextTracer(Net4j.DEBUG_CHANNEL, ControlChannelImpl.class);
+ private static final ContextTracer TRACER = new ContextTracer(Net4j.DEBUG_CHANNEL, ControlChannel.class);
private SynchronizingCorrelator<Short, Boolean> registrations = new SynchronizingCorrelator();
- public ControlChannelImpl(AbstractTCPConnector connector)
+ public ControlChannel(TCPConnector connector)
{
super(connector.getReceiveExecutor());
setChannelIndex(CONTROL_CHANNEL_ID);
@@ -101,7 +101,7 @@ public final class ControlChannelImpl extends Channel
{
byte[] handlerFactoryUTF8 = BufferUtil.getByteArray(byteBuffer);
String protocolID = BufferUtil.fromUTF8(handlerFactoryUTF8);
- Channel channel = ((AbstractTCPConnector)getConnector()).createChannel(channelIndex, protocolID, null);
+ Channel channel = ((TCPConnector)getConnector()).createChannel(channelIndex, protocolID);
if (channel != null)
{
channel.activate();
@@ -136,7 +136,7 @@ public final class ControlChannelImpl extends Channel
try
{
- Channel channel = ((AbstractTCPConnector)getConnector()).getChannel(channelIndex);
+ Channel channel = ((TCPConnector)getConnector()).getChannel(channelIndex);
if (channel != null)
{
channel.deactivate();
@@ -159,7 +159,7 @@ public final class ControlChannelImpl extends Channel
default:
Net4j.LOG.error("Invalid opcode: " + opcode); //$NON-NLS-1$
- ((AbstractTCPConnector)getConnector()).deactivate();
+ ((TCPConnector)getConnector()).deactivate();
}
}
finally
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorImpl.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptor.java
index a0c5d1735d..bf34cfcda3 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorImpl.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptor.java
@@ -10,20 +10,18 @@
**************************************************************************/
package org.eclipse.net4j.internal.tcp;
-import org.eclipse.net4j.tcp.TCPAcceptor;
-import org.eclipse.net4j.tcp.TCPSelector;
-import org.eclipse.net4j.tcp.TCPSelectorListener;
-import org.eclipse.net4j.tcp.TCPUtil;
+import org.eclipse.net4j.tcp.ITCPAcceptor;
+import org.eclipse.net4j.tcp.ITCPSelector;
+import org.eclipse.net4j.tcp.ITCPSelectorListener;
+import org.eclipse.net4j.util.StringUtil;
import org.eclipse.net4j.util.om.trace.ContextTracer;
import org.eclipse.internal.net4j.bundle.Net4j;
import org.eclipse.internal.net4j.transport.Acceptor;
-import org.eclipse.internal.net4j.transport.DescriptionUtil;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
-import java.net.SocketAddress;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.SelectionKey;
import java.nio.channels.ServerSocketChannel;
@@ -34,13 +32,11 @@ import java.util.concurrent.CountDownLatch;
/**
* @author Eike Stepper
*/
-public class TCPAcceptorImpl extends Acceptor implements TCPAcceptor, TCPSelectorListener.Passive
+public class TCPAcceptor extends Acceptor implements ITCPAcceptor, ITCPSelectorListener.Passive
{
- private static final ContextTracer TRACER = new ContextTracer(Net4j.DEBUG_ACCEPTOR, TCPAcceptorImpl.class);
+ private static final ContextTracer TRACER = new ContextTracer(Net4j.DEBUG_ACCEPTOR, TCPAcceptor.class);
- private static final String DEFAULT_ADDRESS = "0.0.0.0";
-
- private TCPSelectorImpl selector;
+ private TCPSelector selector;
private SelectionKey selectionKey;
@@ -54,7 +50,7 @@ public class TCPAcceptorImpl extends Acceptor implements TCPAcceptor, TCPSelecto
private int port;
- public TCPAcceptorImpl()
+ public TCPAcceptor()
{
}
@@ -63,17 +59,27 @@ public class TCPAcceptorImpl extends Acceptor implements TCPAcceptor, TCPSelecto
return address;
}
+ public void setAddress(String address)
+ {
+ this.address = address;
+ }
+
public int getPort()
{
return port;
}
- public TCPSelectorImpl getSelector()
+ public void setPort(int port)
+ {
+ this.port = port;
+ }
+
+ public TCPSelector getSelector()
{
return selector;
}
- public void setSelector(TCPSelectorImpl selector)
+ public void setSelector(TCPSelector selector)
{
this.selector = selector;
}
@@ -102,7 +108,7 @@ public class TCPAcceptorImpl extends Acceptor implements TCPAcceptor, TCPSelecto
}
}
- public void handleAccept(TCPSelector selector, ServerSocketChannel serverSocketChannel)
+ public void handleAccept(ITCPSelector selector, ServerSocketChannel serverSocketChannel)
{
try
{
@@ -115,7 +121,7 @@ public class TCPAcceptorImpl extends Acceptor implements TCPAcceptor, TCPSelecto
}
socketChannel.configureBlocking(false);
- ServerTCPConnectorImpl connector = createConnector(socketChannel);
+ TCPServerConnector connector = createConnector(socketChannel);
addConnector(connector);
}
}
@@ -137,19 +143,13 @@ public class TCPAcceptorImpl extends Acceptor implements TCPAcceptor, TCPSelecto
@Override
public String toString()
{
- return MessageFormat.format("TCPAcceptor[{0}]", getDescription()); //$NON-NLS-1$
+ return MessageFormat.format("TCPAcceptor[{0}:{1}]", address, port); //$NON-NLS-1$
}
- protected ServerTCPConnectorImpl createConnector(SocketChannel socketChannel)
+ protected TCPServerConnector createConnector(SocketChannel socketChannel)
{
- String description = createConnectorDescription(socketChannel);
-
- ServerTCPConnectorImpl connector = new ServerTCPConnectorImpl();
- connector.setDescription(description);
+ TCPServerConnector connector = new TCPServerConnector();
connector.setSocketChannel(socketChannel);
- connector.setReceiveExecutor(getReceiveExecutor());
- connector.setProtocolFactoryRegistry(getProtocolFactoryRegistry());
- connector.setBufferProvider(getBufferProvider());
connector.setSelector(selector);
return connector;
}
@@ -158,20 +158,9 @@ public class TCPAcceptorImpl extends Acceptor implements TCPAcceptor, TCPSelecto
protected void doBeforeActivate() throws Exception
{
super.doBeforeActivate();
- if (getDescription() == null)
+ if (StringUtil.isEmpty(address))
{
- throw new IllegalStateException("description == null"); //$NON-NLS-1$
- }
- else
- {
- String[] elements = DescriptionUtil.getElements(getDescription());
- address = elements[1];
- if (address.length() == 0)
- {
- address = DEFAULT_ADDRESS;
- }
-
- port = Integer.parseInt(elements[2]);
+ throw new IllegalStateException("No address"); //$NON-NLS-1$
}
if (selector == null)
@@ -230,24 +219,4 @@ public class TCPAcceptorImpl extends Acceptor implements TCPAcceptor, TCPSelecto
serverSocketChannel.close();
super.doDeactivate();
}
-
- private String createConnectorDescription(SocketChannel socketChannel)
- {
- SocketAddress addr = socketChannel.socket().getRemoteSocketAddress();
- String host = addr.toString();
- if (host.startsWith("/"))
- {
- host = host.substring(1);
- }
-
- int port = 0;
- int colon = host.indexOf(':');
- if (colon != -1)
- {
- port = Integer.parseInt(host.substring(colon + 1));
- host = host.substring(0, colon);
- }
-
- return TCPUtil.createConnectorDescription(host, port);
- }
}
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorFactory.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorFactory.java
new file mode 100644
index 0000000000..e7ae40ed11
--- /dev/null
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorFactory.java
@@ -0,0 +1,60 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 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.net4j.internal.tcp;
+
+import org.eclipse.net4j.tcp.ITCPConstants;
+import org.eclipse.net4j.util.StringUtil;
+
+import org.eclipse.internal.net4j.transport.AcceptorFactory;
+
+/**
+ * @author Eike Stepper
+ */
+public class TCPAcceptorFactory extends AcceptorFactory<TCPAcceptor>
+{
+ public static final String SEPARATOR = ":"; //$NON-NLS-1$
+
+ public TCPAcceptorFactory()
+ {
+ super(ITCPConstants.TYPE);
+ }
+
+ public TCPAcceptor create(String description)
+ {
+ String address = ITCPConstants.DEFAULT_ADDRESS;
+ int port = ITCPConstants.DEFAULT_PORT;
+
+ if (!StringUtil.isEmpty(description))
+ {
+ String[] tokens = description.split(SEPARATOR);
+ if (!StringUtil.isEmpty(tokens[0]))
+ {
+ address = tokens[0];
+ }
+
+ if (tokens.length > 1 && !StringUtil.isEmpty(tokens[1]))
+ {
+ port = Integer.parseInt(tokens[1]);
+ }
+ }
+
+ TCPAcceptor acceptor = new TCPAcceptor();
+ acceptor.setAddress(address);
+ acceptor.setPort(port);
+ return acceptor;
+ }
+
+ @Override
+ public String getDescriptionFor(TCPAcceptor acceptor)
+ {
+ return acceptor.getAddress() + SEPARATOR + acceptor.getPort();
+ }
+}
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ClientTCPConnectorImpl.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPClientConnector.java
index f126cc3a7d..6efdfbcfc2 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ClientTCPConnectorImpl.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPClientConnector.java
@@ -23,9 +23,9 @@ import java.text.MessageFormat;
/**
* @author Eike Stepper
*/
-public class ClientTCPConnectorImpl extends AbstractTCPConnector
+public class TCPClientConnector extends TCPConnector
{
- public ClientTCPConnectorImpl()
+ public TCPClientConnector()
{
try
{
@@ -58,6 +58,21 @@ public class ClientTCPConnectorImpl extends AbstractTCPConnector
}
@Override
+ protected void doBeforeActivate() throws Exception
+ {
+ super.doBeforeActivate();
+ if (getHost() == null)
+ {
+ throw new IllegalStateException("host == null");
+ }
+
+ if (getPort() == 0)
+ {
+ throw new IllegalStateException("port == 0");
+ }
+ }
+
+ @Override
protected void doActivate() throws Exception
{
super.doActivate();
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/AbstractTCPConnector.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnector.java
index 70871ecf86..fb3cd2d243 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/AbstractTCPConnector.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnector.java
@@ -10,9 +10,9 @@
**************************************************************************/
package org.eclipse.net4j.internal.tcp;
-import org.eclipse.net4j.tcp.TCPConnector;
-import org.eclipse.net4j.tcp.TCPSelector;
-import org.eclipse.net4j.tcp.TCPSelectorListener;
+import org.eclipse.net4j.tcp.ITCPConnector;
+import org.eclipse.net4j.tcp.ITCPSelector;
+import org.eclipse.net4j.tcp.ITCPSelectorListener;
import org.eclipse.net4j.transport.ConnectorException;
import org.eclipse.net4j.transport.ConnectorState;
import org.eclipse.net4j.transport.IBuffer;
@@ -33,25 +33,25 @@ import java.util.Queue;
/**
* @author Eike Stepper
*/
-public abstract class AbstractTCPConnector extends Connector implements TCPConnector, TCPSelectorListener.Active
+public abstract class TCPConnector extends Connector implements ITCPConnector, ITCPSelectorListener.Active
{
- private static final ContextTracer TRACER = new ContextTracer(Net4j.DEBUG_CONNECTOR, AbstractTCPConnector.class);
+ private static final ContextTracer TRACER = new ContextTracer(Net4j.DEBUG_CONNECTOR, TCPConnector.class);
private SocketChannel socketChannel;
- private TCPSelector selector;
+ private ITCPSelector selector;
private SelectionKey selectionKey;
private IBuffer inputBuffer;
- private ControlChannelImpl controlChannel;
+ private ControlChannel controlChannel;
private String host;
private int port;
- public AbstractTCPConnector()
+ public TCPConnector()
{
}
@@ -60,17 +60,27 @@ public abstract class AbstractTCPConnector extends Connector implements TCPConne
return host;
}
+ void setHost(String host)
+ {
+ this.host = host;
+ }
+
public int getPort()
{
return port;
}
- public TCPSelector getSelector()
+ void setPort(int port)
+ {
+ this.port = port;
+ }
+
+ public ITCPSelector getSelector()
{
return selector;
}
- public void setSelector(TCPSelector selector)
+ public void setSelector(ITCPSelector selector)
{
this.selector = selector;
}
@@ -108,7 +118,7 @@ public abstract class AbstractTCPConnector extends Connector implements TCPConne
}
}
- public void handleConnect(TCPSelector selector, SocketChannel channel)
+ public void handleConnect(ITCPSelector selector, SocketChannel channel)
{
try
{
@@ -135,7 +145,7 @@ public abstract class AbstractTCPConnector extends Connector implements TCPConne
}
}
- public void handleRead(TCPSelector selector, SocketChannel socketChannel)
+ public void handleRead(ITCPSelector selector, SocketChannel socketChannel)
{
try
{
@@ -148,8 +158,7 @@ public abstract class AbstractTCPConnector extends Connector implements TCPConne
if (byteBuffer != null)
{
short channelIndex = inputBuffer.getChannelIndex();
- Channel channel = channelIndex == ControlChannelImpl.CONTROL_CHANNEL_ID ? controlChannel
- : getChannel(channelIndex);
+ Channel channel = channelIndex == ControlChannel.CONTROL_CHANNEL_ID ? controlChannel : getChannel(channelIndex);
if (channel != null)
{
channel.handleBufferFromMultiplexer(inputBuffer);
@@ -178,7 +187,7 @@ public abstract class AbstractTCPConnector extends Connector implements TCPConne
}
}
- public void handleWrite(TCPSelector selector, SocketChannel socketChannel)
+ public void handleWrite(ITCPSelector selector, SocketChannel socketChannel)
{
try
{
@@ -284,23 +293,13 @@ public abstract class AbstractTCPConnector extends Connector implements TCPConne
{
throw new IllegalStateException("selector == null");
}
-
- if (host == null)
- {
- throw new IllegalStateException("host == null");
- }
-
- if (port == 0)
- {
- throw new IllegalStateException("port == 0");
- }
}
@Override
protected void doActivate() throws Exception
{
super.doActivate();
- controlChannel = new ControlChannelImpl(this);
+ controlChannel = new ControlChannel(this);
controlChannel.activate();
selector.registerAsync(socketChannel, this);
}
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnectorFactory.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnectorFactory.java
new file mode 100644
index 0000000000..1b93924a23
--- /dev/null
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnectorFactory.java
@@ -0,0 +1,78 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 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.net4j.internal.tcp;
+
+import org.eclipse.net4j.tcp.ITCPConstants;
+import org.eclipse.net4j.util.StringUtil;
+import org.eclipse.net4j.util.factory.ProductCreationException;
+
+import org.eclipse.internal.net4j.transport.ConnectorFactory;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+/**
+ * @author Eike Stepper
+ */
+public class TCPConnectorFactory extends ConnectorFactory<TCPClientConnector>
+{
+ private static final String URL_SCHEME = "http://";
+
+ public TCPConnectorFactory()
+ {
+ super(ITCPConstants.TYPE);
+ }
+
+ public TCPClientConnector create(String description)
+ {
+ try
+ {
+ // TODO Don't use URL
+ URL url = new URL(URL_SCHEME + description);
+ String userID = url.getUserInfo();
+ String host = url.getHost();
+ int port = url.getPort();
+ if (port == -1)
+ {
+ port = ITCPConstants.DEFAULT_PORT;
+ }
+
+ TCPClientConnector connector = new TCPClientConnector();
+ connector.setUserID(userID);
+ connector.setHost(host);
+ connector.setPort(port);
+ return connector;
+ }
+ catch (MalformedURLException ex)
+ {
+ throw new ProductCreationException(ex);
+ }
+ }
+
+ @Override
+ public String getDescriptionFor(TCPClientConnector connector)
+ {
+ String description = connector.getHost();
+ String userID = connector.getUserID();
+ if (!StringUtil.isEmpty(userID))
+ {
+ description = userID + "@" + description;
+ }
+
+ int port = connector.getPort();
+ if (port != ITCPConstants.DEFAULT_PORT)
+ {
+ description = description + ":" + port;
+ }
+
+ return description;
+ }
+}
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnectorFactoryImpl.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnectorFactoryImpl.java
deleted file mode 100644
index ea4255902c..0000000000
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnectorFactoryImpl.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/***************************************************************************
- * Copyright (c) 2004-2007 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.net4j.internal.tcp;
-
-import org.eclipse.net4j.tcp.TCPConstants;
-import org.eclipse.net4j.transport.IConnector;
-
-/**
- * @author Eike Stepper
- */
-public class TCPConnectorFactoryImpl implements IConnectorFactory
-{
- public String getType()
- {
- return TCPConstants.TYPE;
- }
-
- public IConnector createConnector()
- {
- return new ClientTCPConnectorImpl();
- }
-}
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPSelectorImpl.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPSelector.java
index aeaa54c1a5..75c47ccf24 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPSelectorImpl.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPSelector.java
@@ -10,10 +10,10 @@
**************************************************************************/
package org.eclipse.net4j.internal.tcp;
-import org.eclipse.net4j.tcp.TCPSelector;
-import org.eclipse.net4j.tcp.TCPSelectorListener;
-import org.eclipse.net4j.tcp.TCPSelectorListener.Active;
-import org.eclipse.net4j.tcp.TCPSelectorListener.Passive;
+import org.eclipse.net4j.tcp.ITCPSelector;
+import org.eclipse.net4j.tcp.ITCPSelectorListener;
+import org.eclipse.net4j.tcp.ITCPSelectorListener.Active;
+import org.eclipse.net4j.tcp.ITCPSelectorListener.Passive;
import org.eclipse.net4j.util.om.trace.ContextTracer;
import org.eclipse.internal.net4j.bundle.Net4j;
@@ -35,9 +35,9 @@ import java.util.concurrent.ConcurrentLinkedQueue;
/**
* @author Eike Stepper
*/
-public class TCPSelectorImpl extends Lifecycle implements TCPSelector, Runnable
+public class TCPSelector extends Lifecycle implements ITCPSelector, Runnable
{
- private static final ContextTracer TRACER = new ContextTracer(Net4j.DEBUG_SELECTOR, TCPSelectorImpl.class);
+ private static final ContextTracer TRACER = new ContextTracer(Net4j.DEBUG_SELECTOR, TCPSelector.class);
private Selector selector;
@@ -45,7 +45,7 @@ public class TCPSelectorImpl extends Lifecycle implements TCPSelector, Runnable
private Thread thread;
- public TCPSelectorImpl()
+ public TCPSelector()
{
}
@@ -224,7 +224,7 @@ public class TCPSelectorImpl extends Lifecycle implements TCPSelector, Runnable
if (channel instanceof ServerSocketChannel)
{
ServerSocketChannel ssChannel = (ServerSocketChannel)selKey.channel();
- TCPSelectorListener.Passive listener = (TCPSelectorListener.Passive)selKey.attachment();
+ ITCPSelectorListener.Passive listener = (ITCPSelectorListener.Passive)selKey.attachment();
if (selKey.isAcceptable())
{
@@ -239,7 +239,7 @@ public class TCPSelectorImpl extends Lifecycle implements TCPSelector, Runnable
else if (channel instanceof SocketChannel)
{
SocketChannel sChannel = (SocketChannel)channel;
- TCPSelectorListener.Active listener = (TCPSelectorListener.Active)selKey.attachment();
+ ITCPSelectorListener.Active listener = (ITCPSelectorListener.Active)selKey.attachment();
if (selKey.isConnectable())
{
@@ -334,7 +334,7 @@ public class TCPSelectorImpl extends Lifecycle implements TCPSelector, Runnable
}
}
- private void doRegister(final ServerSocketChannel channel, final TCPSelectorListener.Passive listener)
+ private void doRegister(final ServerSocketChannel channel, final ITCPSelectorListener.Passive listener)
{
if (TRACER.isEnabled())
{
@@ -353,7 +353,7 @@ public class TCPSelectorImpl extends Lifecycle implements TCPSelector, Runnable
}
}
- private void doRegister(final SocketChannel channel, final TCPSelectorListener.Active listener)
+ private void doRegister(final SocketChannel channel, final ITCPSelectorListener.Active listener)
{
if (TRACER.isEnabled())
{
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorFactoryImpl.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPSelectorFactory.java
index 1330087dc8..8ba166f9dc 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorFactoryImpl.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPSelectorFactory.java
@@ -10,21 +10,25 @@
**************************************************************************/
package org.eclipse.net4j.internal.tcp;
-import org.eclipse.net4j.tcp.TCPConstants;
-import org.eclipse.net4j.transport.IAcceptor;
+import org.eclipse.net4j.tcp.ITCPConstants;
+
+import org.eclipse.internal.net4j.bundle.Net4j;
+import org.eclipse.internal.net4j.util.factory.Factory;
/**
* @author Eike Stepper
*/
-public class TCPAcceptorFactoryImpl implements IAcceptorFactory
+public class TCPSelectorFactory extends Factory<TCPSelector>
{
- public String getType()
+ public static final String SELECTOR_GROUP = Net4j.BUNDLE_ID + ".selectors";
+
+ public TCPSelectorFactory()
{
- return TCPConstants.TYPE;
+ super(SELECTOR_GROUP, ITCPConstants.TYPE);
}
- public IAcceptor createAcceptor()
+ public TCPSelector create(String description)
{
- return new TCPAcceptorImpl();
+ return new TCPSelector();
}
}
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPSelectorInjector.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPSelectorInjector.java
new file mode 100644
index 0000000000..aaf25e1f69
--- /dev/null
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPSelectorInjector.java
@@ -0,0 +1,47 @@
+/***************************************************************************
+ * 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.net4j.internal.tcp;
+
+import org.eclipse.net4j.tcp.ITCPConstants;
+import org.eclipse.net4j.util.container.IElementProcessor;
+import org.eclipse.net4j.util.container.IManagedContainer;
+
+/**
+ * @author Eike Stepper
+ */
+public class TCPSelectorInjector implements IElementProcessor
+{
+ public TCPSelectorInjector()
+ {
+ }
+
+ public Object process(IManagedContainer container, String productGroup, String factoryType, String description,
+ Object element)
+ {
+ if (element instanceof TCPAcceptor)
+ {
+ TCPAcceptor acceptor = (TCPAcceptor)element;
+ acceptor.setSelector(getSelector(container));
+ }
+ else if (element instanceof TCPConnector)
+ {
+ TCPConnector connector = (TCPConnector)element;
+ connector.setSelector(getSelector(container));
+ }
+
+ return element;
+ }
+
+ protected TCPSelector getSelector(IManagedContainer container)
+ {
+ return (TCPSelector)container.getElement(TCPSelectorFactory.SELECTOR_GROUP, ITCPConstants.TYPE, null);
+ }
+}
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ServerTCPConnectorImpl.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPServerConnector.java
index 217276ad09..2ba8f66cfa 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ServerTCPConnectorImpl.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPServerConnector.java
@@ -17,9 +17,9 @@ import java.text.MessageFormat;
/**
* @author Eike Stepper
*/
-public class ServerTCPConnectorImpl extends AbstractTCPConnector
+public class TCPServerConnector extends TCPConnector
{
- public ServerTCPConnectorImpl()
+ public TCPServerConnector()
{
}
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPAcceptor.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPAcceptor.java
index b3a65f445c..019a88f163 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPAcceptor.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPAcceptor.java
@@ -15,7 +15,7 @@ import org.eclipse.net4j.transport.IAcceptor;
/**
* @author Eike Stepper
*/
-public interface TCPAcceptor extends IAcceptor
+public interface ITCPAcceptor extends IAcceptor
{
public String getAddress();
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPConnector.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPConnector.java
index 0ee76dc6c2..70291684ff 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPConnector.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPConnector.java
@@ -15,7 +15,7 @@ import org.eclipse.net4j.transport.IConnector;
/**
* @author Eike Stepper
*/
-public interface TCPConnector extends IConnector
+public interface ITCPConnector extends IConnector
{
public String getHost();
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPConstants.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPConstants.java
index 5637c77a51..1677120712 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPConstants.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPConstants.java
@@ -13,7 +13,7 @@ package org.eclipse.net4j.tcp;
/**
* @author Eike Stepper
*/
-public interface TCPConstants
+public interface ITCPConstants
{
public static final String TYPE = "tcp";
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPSelector.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPSelector.java
index 493eead36f..a776e66576 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPSelector.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPSelector.java
@@ -10,8 +10,8 @@
**************************************************************************/
package org.eclipse.net4j.tcp;
-import org.eclipse.net4j.tcp.TCPSelectorListener.Active;
-import org.eclipse.net4j.tcp.TCPSelectorListener.Passive;
+import org.eclipse.net4j.tcp.ITCPSelectorListener.Active;
+import org.eclipse.net4j.tcp.ITCPSelectorListener.Passive;
import java.nio.channels.SelectionKey;
import java.nio.channels.ServerSocketChannel;
@@ -20,7 +20,7 @@ import java.nio.channels.SocketChannel;
/**
* @author Eike Stepper
*/
-public interface TCPSelector
+public interface ITCPSelector
{
public void invokeAsync(Runnable operation);
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPSelectorListener.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPSelectorListener.java
index 7bf72904a7..6eeec066ff 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPSelectorListener.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ITCPSelectorListener.java
@@ -17,27 +17,27 @@ import java.nio.channels.SocketChannel;
/**
* @author Eike Stepper
*/
-public interface TCPSelectorListener
+public interface ITCPSelectorListener
{
public void registered(SelectionKey selectionKey);
/**
* @author Eike Stepper
*/
- public interface Passive extends TCPSelectorListener
+ public interface Passive extends ITCPSelectorListener
{
- public void handleAccept(TCPSelector selector, ServerSocketChannel serverSocketChannel);
+ public void handleAccept(ITCPSelector selector, ServerSocketChannel serverSocketChannel);
}
/**
* @author Eike Stepper
*/
- public interface Active extends TCPSelectorListener
+ public interface Active extends ITCPSelectorListener
{
- public void handleConnect(TCPSelector selector, SocketChannel channel);
+ public void handleConnect(ITCPSelector selector, SocketChannel channel);
- public void handleRead(TCPSelector selector, SocketChannel socketChannel);
+ public void handleRead(ITCPSelector selector, SocketChannel socketChannel);
- public void handleWrite(TCPSelector selector, SocketChannel socketChannel);
+ public void handleWrite(ITCPSelector selector, SocketChannel socketChannel);
}
} \ No newline at end of file
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPUtil.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPUtil.java
deleted file mode 100644
index ceb545631c..0000000000
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPUtil.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/***************************************************************************
- * Copyright (c) 2004-2007 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.net4j.tcp;
-
-import org.eclipse.internal.net4j.transport.DescriptionUtil;
-
-/**
- * @author Eike Stepper
- */
-public final class TCPUtil
-{
- private TCPUtil()
- {
- }
-
- public static String createAcceptorDescription()
- {
- return createAcceptorDescription(TCPConstants.DEFAULT_ADDRESS);
- }
-
- public static String createAcceptorDescription(String address)
- {
- return createAcceptorDescription(address, TCPConstants.DEFAULT_PORT);
- }
-
- public static String createAcceptorDescription(String address, int port)
- {
- Object[] elements = { address, port };
- return DescriptionUtil.getDescription(TCPConstants.TYPE, elements);
- }
-
- public static String createConnectorDescription(String host)
- {
- return createConnectorDescription(null, host);
- }
-
- public static String createConnectorDescription(String host, int port)
- {
- return createConnectorDescription(null, host, port);
- }
-
- public static String createConnectorDescription(String userName, String host)
- {
- return createConnectorDescription(userName, host, TCPConstants.DEFAULT_PORT);
- }
-
- public static String createConnectorDescription(String userName, String host, int port)
- {
- Object[] elements = { userName, host, port };
- return DescriptionUtil.getDescription(TCPConstants.TYPE, elements);
- }
-}

Back to the top