Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/protocol/ClientProtocol.java')
-rw-r--r--plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/protocol/ClientProtocol.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/protocol/ClientProtocol.java b/plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/protocol/ClientProtocol.java
index ac1ca69e75..7f11c483c3 100644
--- a/plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/protocol/ClientProtocol.java
+++ b/plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/protocol/ClientProtocol.java
@@ -13,15 +13,21 @@ package org.eclipse.net4j.internal.buddies.protocol;
import org.eclipse.net4j.buddies.internal.protocol.MessageIndication;
import org.eclipse.net4j.buddies.internal.protocol.ProtocolConstants;
import org.eclipse.net4j.buddies.protocol.ISession;
+import org.eclipse.net4j.internal.buddies.ClientSession;
import org.eclipse.net4j.internal.buddies.Self;
import org.eclipse.net4j.signal.SignalProtocol;
import org.eclipse.net4j.signal.SignalReactor;
+import org.eclipse.net4j.util.concurrent.ConcurrencyUtil;
/**
* @author Eike Stepper
*/
public class ClientProtocol extends SignalProtocol
{
+ private static final long GET_SESSION_TIMEOUT = 20000;
+
+ private static final int GET_SESSION_INTERVAL = 100;
+
public ClientProtocol()
{
}
@@ -66,4 +72,23 @@ public class ClientProtocol extends SignalProtocol
ISession session = (ISession)getInfraStructure();
return (Self)session.getSelf();
}
+
+ public ClientSession getSession()
+ {
+ int max = (int)(GET_SESSION_TIMEOUT / GET_SESSION_INTERVAL);
+ for (int i = 0; i < max; i++)
+ {
+ ClientSession session = (ClientSession)getInfraStructure();
+ if (session == null)
+ {
+ ConcurrencyUtil.sleep(GET_SESSION_INTERVAL);
+ }
+ else
+ {
+ return session;
+ }
+ }
+
+ throw new IllegalStateException("No session after " + max + " milliseconds");
+ }
}

Back to the top