diff options
author | Eike Stepper | 2007-03-22 19:18:46 +0000 |
---|---|---|
committer | Eike Stepper | 2007-03-22 19:18:46 +0000 |
commit | 3eb59e513278b894153bf601911e788363a39575 (patch) | |
tree | 57f255e576828f4c973a87dc91eda94ed45f33a1 /plugins/org.eclipse.net4j.tcp | |
parent | 3ef517a5167306a360c18c97e7365ac1d2aac80d (diff) | |
download | cdo-3eb59e513278b894153bf601911e788363a39575.tar.gz cdo-3eb59e513278b894153bf601911e788363a39575.tar.xz cdo-3eb59e513278b894153bf601911e788363a39575.zip |
*** empty log message ***
Diffstat (limited to 'plugins/org.eclipse.net4j.tcp')
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); - } -} |