[581293] Tell protocols when they are fully connected
https://bugs.eclipse.org/bugs/show_bug.cgi?id=581293
diff --git a/features/org.eclipse.emf.cdo.all-feature/feature.xml b/features/org.eclipse.emf.cdo.all-feature/feature.xml
index 2b2e055..2b831e4 100644
--- a/features/org.eclipse.emf.cdo.all-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo.all-feature/feature.xml
@@ -13,7 +13,7 @@
<feature
id="org.eclipse.emf.cdo.all"
label="%featureName"
- version="4.21.0.qualifier"
+ version="4.22.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.cdo.license"
license-feature-version="0.0.0">
diff --git a/features/org.eclipse.emf.cdo.all-feature/pom.xml b/features/org.eclipse.emf.cdo.all-feature/pom.xml
index b1c3ee6..e55604a 100644
--- a/features/org.eclipse.emf.cdo.all-feature/pom.xml
+++ b/features/org.eclipse.emf.cdo.all-feature/pom.xml
@@ -25,7 +25,7 @@
<groupId>org.eclipse.emf.cdo.features</groupId>
<artifactId>org.eclipse.emf.cdo.all</artifactId>
- <version>4.21.0-SNAPSHOT</version>
+ <version>4.22.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.cdo.server-feature/feature.xml b/features/org.eclipse.emf.cdo.server-feature/feature.xml
index 93352d5..4cc4522 100644
--- a/features/org.eclipse.emf.cdo.server-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo.server-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.emf.cdo.server"
label="%featureName"
- version="4.21.0.qualifier"
+ version="4.22.0.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg"
license-feature="org.eclipse.emf.cdo.license"
diff --git a/features/org.eclipse.emf.cdo.server-feature/pom.xml b/features/org.eclipse.emf.cdo.server-feature/pom.xml
index d9c1cde..a38cc84 100644
--- a/features/org.eclipse.emf.cdo.server-feature/pom.xml
+++ b/features/org.eclipse.emf.cdo.server-feature/pom.xml
@@ -25,7 +25,7 @@
<groupId>org.eclipse.emf.cdo.features</groupId>
<artifactId>org.eclipse.emf.cdo.server</artifactId>
- <version>4.21.0-SNAPSHOT</version>
+ <version>4.22.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.emf.cdo.server.embedded-feature/feature.xml b/features/org.eclipse.emf.cdo.server.embedded-feature/feature.xml
index 88485fe..67f7865 100644
--- a/features/org.eclipse.emf.cdo.server.embedded-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo.server.embedded-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.emf.cdo.server.embedded"
label="%featureName"
- version="4.21.0.qualifier"
+ version="4.22.0.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg"
license-feature="org.eclipse.emf.cdo.license"
diff --git a/features/org.eclipse.emf.cdo.server.embedded-feature/pom.xml b/features/org.eclipse.emf.cdo.server.embedded-feature/pom.xml
index da1a5a3..1037b54 100644
--- a/features/org.eclipse.emf.cdo.server.embedded-feature/pom.xml
+++ b/features/org.eclipse.emf.cdo.server.embedded-feature/pom.xml
@@ -25,7 +25,7 @@
<groupId>org.eclipse.emf.cdo.features</groupId>
<artifactId>org.eclipse.emf.cdo.server.embedded</artifactId>
- <version>4.21.0-SNAPSHOT</version>
+ <version>4.22.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.net4j-feature/feature.xml b/features/org.eclipse.net4j-feature/feature.xml
index be28790..1ce8435 100644
--- a/features/org.eclipse.net4j-feature/feature.xml
+++ b/features/org.eclipse.net4j-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.net4j"
label="%featureName"
- version="4.21.0.qualifier"
+ version="4.22.0.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg"
license-feature="org.eclipse.emf.cdo.license"
diff --git a/features/org.eclipse.net4j-feature/pom.xml b/features/org.eclipse.net4j-feature/pom.xml
index ecb6930..eb37309 100644
--- a/features/org.eclipse.net4j-feature/pom.xml
+++ b/features/org.eclipse.net4j-feature/pom.xml
@@ -25,7 +25,7 @@
<groupId>org.eclipse.emf.cdo.features</groupId>
<artifactId>org.eclipse.net4j</artifactId>
- <version>4.21.0-SNAPSHOT</version>
+ <version>4.22.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.net4j.sdk-feature/feature.xml b/features/org.eclipse.net4j.sdk-feature/feature.xml
index 5f981b0..4939a58 100644
--- a/features/org.eclipse.net4j.sdk-feature/feature.xml
+++ b/features/org.eclipse.net4j.sdk-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.net4j.sdk"
label="%featureName"
- version="4.21.0.qualifier"
+ version="4.22.0.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg"
license-feature="org.eclipse.emf.cdo.license"
diff --git a/features/org.eclipse.net4j.sdk-feature/pom.xml b/features/org.eclipse.net4j.sdk-feature/pom.xml
index 2664dbe..c59368b 100644
--- a/features/org.eclipse.net4j.sdk-feature/pom.xml
+++ b/features/org.eclipse.net4j.sdk-feature/pom.xml
@@ -25,7 +25,7 @@
<groupId>org.eclipse.emf.cdo.features</groupId>
<artifactId>org.eclipse.net4j.sdk</artifactId>
- <version>4.21.0-SNAPSHOT</version>
+ <version>4.22.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.server.net4j/META-INF/MANIFEST.MF
index e1e0108..8b53713 100644
--- a/plugins/org.eclipse.emf.cdo.server.net4j/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.server.net4j/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.emf.cdo.server.net4j;singleton:=true
-Bundle-Version: 4.5.4.qualifier
+Bundle-Version: 4.6.0.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -12,7 +12,7 @@
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)";resolution:=optional,
org.eclipse.emf.cdo.server;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
org.eclipse.net4j;bundle-version="[4.0.0,5.0.0)";visibility:=reexport
-Export-Package: org.eclipse.emf.cdo.server.internal.net4j.bundle;version="4.5.4";x-internal:=true,
- org.eclipse.emf.cdo.server.internal.net4j.protocol;version="4.5.4";x-friends:="org.eclipse.emf.cdo.tests",
- org.eclipse.emf.cdo.server.net4j;version="4.5.4"
+Export-Package: org.eclipse.emf.cdo.server.internal.net4j.bundle;version="4.6.0";x-internal:=true,
+ org.eclipse.emf.cdo.server.internal.net4j.protocol;version="4.6.0";x-friends:="org.eclipse.emf.cdo.tests",
+ org.eclipse.emf.cdo.server.net4j;version="4.6.0"
Automatic-Module-Name: org.eclipse.emf.cdo.server.net4j
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/pom.xml b/plugins/org.eclipse.emf.cdo.server.net4j/pom.xml
index f7628b7..ba5d1b1 100644
--- a/plugins/org.eclipse.emf.cdo.server.net4j/pom.xml
+++ b/plugins/org.eclipse.emf.cdo.server.net4j/pom.xml
@@ -25,7 +25,7 @@
<groupId>org.eclipse.emf.cdo</groupId>
<artifactId>org.eclipse.emf.cdo.server.net4j</artifactId>
- <version>4.5.4-SNAPSHOT</version>
+ <version>4.6.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.net4j/META-INF/MANIFEST.MF b/plugins/org.eclipse.net4j/META-INF/MANIFEST.MF
index 241682c..ddcd84e 100644
--- a/plugins/org.eclipse.net4j/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.net4j/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.net4j;singleton:=true
-Bundle-Version: 4.16.0.qualifier
+Bundle-Version: 4.17.0.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -11,7 +11,7 @@
Bundle-ClassPath: .
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)";resolution:=optional,
org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)";visibility:=reexport
-Export-Package: org.eclipse.internal.net4j;version="4.16.0";
+Export-Package: org.eclipse.internal.net4j;version="4.17.0";
x-friends:="org.eclipse.net4j.http.server,
org.eclipse.net4j.jvm,
org.eclipse.net4j.tcp,
@@ -21,7 +21,7 @@
org.eclipse.net4j.http.tests,
org.eclipse.net4j.tests,
org.eclipse.net4j.trace",
- org.eclipse.internal.net4j.buffer;version="4.16.0";
+ org.eclipse.internal.net4j.buffer;version="4.17.0";
x-friends:="org.eclipse.net4j.http.server,
org.eclipse.net4j.jvm,
org.eclipse.net4j.tcp,
@@ -31,18 +31,18 @@
org.eclipse.net4j.http.tests,
org.eclipse.net4j.tests,
org.eclipse.net4j.trace",
- org.eclipse.internal.net4j.bundle;version="4.16.0";x-internal:=true,
- org.eclipse.net4j;version="4.16.0",
- org.eclipse.net4j.acceptor;version="4.16.0",
- org.eclipse.net4j.buffer;version="4.16.0",
- org.eclipse.net4j.channel;version="4.16.0",
- org.eclipse.net4j.connector;version="4.16.0",
- org.eclipse.net4j.protocol;version="4.16.0",
- org.eclipse.net4j.signal;version="4.16.0",
- org.eclipse.net4j.signal.confirmation;version="4.16.0",
- org.eclipse.net4j.signal.heartbeat;version="4.16.0",
- org.eclipse.net4j.signal.security;version="4.16.0",
- org.eclipse.net4j.signal.wrapping;version="4.16.0",
- org.eclipse.spi.net4j;version="4.16.0"
+ org.eclipse.internal.net4j.bundle;version="4.17.0";x-internal:=true,
+ org.eclipse.net4j;version="4.17.0",
+ org.eclipse.net4j.acceptor;version="4.17.0",
+ org.eclipse.net4j.buffer;version="4.17.0",
+ org.eclipse.net4j.channel;version="4.17.0",
+ org.eclipse.net4j.connector;version="4.17.0",
+ org.eclipse.net4j.protocol;version="4.17.0",
+ org.eclipse.net4j.signal;version="4.17.0",
+ org.eclipse.net4j.signal.confirmation;version="4.17.0",
+ org.eclipse.net4j.signal.heartbeat;version="4.17.0",
+ org.eclipse.net4j.signal.security;version="4.17.0",
+ org.eclipse.net4j.signal.wrapping;version="4.17.0",
+ org.eclipse.spi.net4j;version="4.17.0"
Eclipse-BuddyPolicy: registered
Automatic-Module-Name: org.eclipse.net4j
diff --git a/plugins/org.eclipse.net4j/pom.xml b/plugins/org.eclipse.net4j/pom.xml
index c140105..40fb482 100644
--- a/plugins/org.eclipse.net4j/pom.xml
+++ b/plugins/org.eclipse.net4j/pom.xml
@@ -25,7 +25,7 @@
<groupId>org.eclipse.emf.cdo</groupId>
<artifactId>org.eclipse.net4j</artifactId>
- <version>4.16.0-SNAPSHOT</version>
+ <version>4.17.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/protocol/IProtocol3.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/protocol/IProtocol3.java
new file mode 100644
index 0000000..4c1db60
--- /dev/null
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/protocol/IProtocol3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2023 Eike Stepper (Loehne, Germany) and others.
+ * 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.protocol;
+
+/**
+ * A {@link IProtocol protocol} that is told when it is {@link #doWhenFullyConnected() fully connected}.
+ *
+ * @author Eike Stepper
+ * @since 4.17
+ */
+public interface IProtocol3<INFRA_STRUCTURE> extends IProtocol2<INFRA_STRUCTURE>
+{
+ public default void doWhenFullyConnected()
+ {
+ }
+}
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java
index 1af8838..97e0b2e 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java
@@ -233,6 +233,8 @@
@Override
public void handleBuffer(IBuffer buffer)
{
+ checkID();
+
BufferState state = buffer.getState();
if (state != BufferState.PUTTING)
{
@@ -382,7 +384,7 @@
protected void doBeforeActivate() throws Exception
{
super.doBeforeActivate();
- checkState(id != IBuffer.NO_CHANNEL, "channelID == NO_CHANNEL"); //$NON-NLS-1$
+ checkID();
checkState(channelMultiplexer, "channelMultiplexer"); //$NON-NLS-1$
}
@@ -428,6 +430,11 @@
return !isActive();
}
+ private void checkID()
+ {
+ checkState(id != IBuffer.NO_CHANNEL, "channelID == NO_CHANNEL"); //$NON-NLS-1$
+ }
+
private void fireCountersChangedEvent()
{
IListener[] listeners = getListeners();
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java
index 12652d0..b51c00a 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java
@@ -18,6 +18,7 @@
import org.eclipse.net4j.channel.IChannelMultiplexer;
import org.eclipse.net4j.protocol.IProtocol;
import org.eclipse.net4j.protocol.IProtocol2;
+import org.eclipse.net4j.protocol.IProtocol3;
import org.eclipse.net4j.protocol.IProtocolProvider;
import org.eclipse.net4j.protocol.ProtocolVersionException;
import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
@@ -205,6 +206,8 @@
String message = "Channel registration timeout after " + getOpenChannelTimeout() + " milliseconds";
throw new TimeoutRuntimeException(message, ex);
}
+
+ protocolConnected(protocol);
}
catch (ChannelException ex)
{
@@ -246,6 +249,7 @@
channel.setID(channelID);
addChannel(channel);
+ protocolConnected(protocol);
return channel;
}
finally
@@ -467,4 +471,12 @@
throw ex;
}
}
+
+ private void protocolConnected(IProtocol<?> protocol)
+ {
+ if (protocol instanceof IProtocol3)
+ {
+ ((IProtocol3<?>)protocol).doWhenFullyConnected();
+ }
+ }
}
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Protocol.java b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Protocol.java
index 6f759dc..4a7ec3e 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Protocol.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Protocol.java
@@ -12,7 +12,7 @@
import org.eclipse.net4j.buffer.IBufferProvider;
import org.eclipse.net4j.channel.IChannel;
-import org.eclipse.net4j.protocol.IProtocol2;
+import org.eclipse.net4j.protocol.IProtocol3;
import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
import org.eclipse.net4j.util.concurrent.ConcurrencyUtil;
import org.eclipse.net4j.util.concurrent.IExecutorServiceProvider;
@@ -32,7 +32,7 @@
* @author Eike Stepper
* @since 2.0
*/
-public abstract class Protocol<INFRA_STRUCTURE> extends Lifecycle implements IProtocol2<INFRA_STRUCTURE>, IExecutorServiceProvider
+public abstract class Protocol<INFRA_STRUCTURE> extends Lifecycle implements IProtocol3<INFRA_STRUCTURE>, IExecutorServiceProvider
{
private String type;
diff --git a/releng/org.eclipse.emf.cdo.releng.parent/tp/org.eclipse.emf.cdo.releng.tp.target b/releng/org.eclipse.emf.cdo.releng.parent/tp/org.eclipse.emf.cdo.releng.tp.target
index 054a3ac..b09bb71 100644
--- a/releng/org.eclipse.emf.cdo.releng.parent/tp/org.eclipse.emf.cdo.releng.tp.target
+++ b/releng/org.eclipse.emf.cdo.releng.parent/tp/org.eclipse.emf.cdo.releng.tp.target
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?>
-<target name="Generated from CDO" sequenceNumber="84">
+<target name="Generated from CDO" sequenceNumber="85">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="com.google.guava" version="0.0.0"/>
@@ -60,6 +60,7 @@
<repository location="https://download.oracle.com/otn_software/oepe/12.2.1.3/mars/repository/tools"/>
<repository location="https://www.springsite.com/eclipse/2.1.0/update"/>
<repository location="https://download.eclipse.org/tools/ajdt/48/dev/update"/>
+ <repository location="https://download.eclipse.org/eclipse/updates/4.27-I-builds"/>
</location>
</locations>
</target>