diff options
| author | slewis | 2004-12-29 22:15:19 +0000 |
|---|---|---|
| committer | slewis | 2004-12-29 22:15:19 +0000 |
| commit | 699782445606eb0f447da3ce045910b31dccfa6e (patch) | |
| tree | 64bc4b2d20574dd7929ff15c4e8bf789f6ca1a17 | |
| parent | d8477ff461a9936f3eb1499b331a071cde871a4a (diff) | |
| download | org.eclipse.ecf-699782445606eb0f447da3ce045910b31dccfa6e.tar.gz org.eclipse.ecf-699782445606eb0f447da3ce045910b31dccfa6e.tar.xz org.eclipse.ecf-699782445606eb0f447da3ce045910b31dccfa6e.zip | |
Added code to generic container implementation dispose(long time). Also created
test case for doing dispose for client and server
2 files changed, 18 insertions, 7 deletions
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/ClientSOContainer.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/ClientSOContainer.java index 679f5d375..b892be6ff 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/ClientSOContainer.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/ClientSOContainer.java @@ -35,6 +35,18 @@ public abstract class ClientSOContainer extends SOContainer { connectionState = UNCONNECTED; connectLock = new Lock(); } + public void dispose(long wait) { + synchronized (connectLock) { + isClosing = true; + if (isConnected()) { + this.leaveGroup(); + } else if (isConnecting()) { + killConnection(connection); + } + remoteServerID = null; + } + super.dispose(wait); + } public final boolean isGroupServer() { return false; } diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainer.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainer.java index fe39e8938..85ad8b1c1 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainer.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainer.java @@ -486,17 +486,16 @@ public abstract class SOContainer implements ISharedObjectContainer { // XXX Notify listeners that we're going away // Clear group manager groupManager.removeAllMembers(); + groupManager = null; // Clear shared object manager sharedObjectManager.dispose(); - try { - synchronized (this) { - wait(waittime); - } - } catch (InterruptedException e) { - - } + sharedObjectManager = null; sharedObjectThreadGroup.interrupt(); + sharedObjectThreadGroup = null; loadingThreadGroup.interrupt(); + loadingThreadGroup = null; + listeners.clear(); + listeners = null; } /* |
