diff options
-rw-r--r-- | cpp/src/Glacier2Lib/SessionHelper.cpp | 5 | ||||
-rw-r--r-- | cpp/test/Glacier2/sessionHelper/Client.cpp | 2 | ||||
-rw-r--r-- | csharp/src/Glacier2/SessionHelper.cs | 8 | ||||
-rw-r--r-- | csharp/test/Glacier2/sessionHelper/Client.cs | 4 | ||||
-rw-r--r-- | java/src/Glacier2/src/main/java/Glacier2/SessionHelper.java | 12 | ||||
-rw-r--r-- | java/test/src/main/java/test/Glacier2/sessionHelper/Client.java | 12 |
6 files changed, 41 insertions, 2 deletions
diff --git a/cpp/src/Glacier2Lib/SessionHelper.cpp b/cpp/src/Glacier2Lib/SessionHelper.cpp index fde5247a843..7ce2d2c3eb9 100644 --- a/cpp/src/Glacier2Lib/SessionHelper.cpp +++ b/cpp/src/Glacier2Lib/SessionHelper.cpp @@ -572,6 +572,11 @@ public: { _communicator->setDefaultRouter(finder->getRouter()); } + catch(const Ice::CommunicatorDestroyedException& ex) + { + _session->dispatchCallback(new ConnectFailed(_callback, _session, ex), 0); + return; + } catch(const Ice::Exception&) { // diff --git a/cpp/test/Glacier2/sessionHelper/Client.cpp b/cpp/test/Glacier2/sessionHelper/Client.cpp index 748108965ac..54b29c28741 100644 --- a/cpp/test/Glacier2/sessionHelper/Client.cpp +++ b/cpp/test/Glacier2/sessionHelper/Client.cpp @@ -316,6 +316,8 @@ public: _factory->setPort(12011); _factory->setProtocol(protocol); _session = _factory->connect("userid", "abc123"); + + IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(100)); _session->destroy(); // diff --git a/csharp/src/Glacier2/SessionHelper.cs b/csharp/src/Glacier2/SessionHelper.cs index d1f60742c74..ec7b026e2af 100644 --- a/csharp/src/Glacier2/SessionHelper.cs +++ b/csharp/src/Glacier2/SessionHelper.cs @@ -448,6 +448,14 @@ public class SessionHelper { _communicator.setDefaultRouter(finder.getRouter()); } + catch(Ice.CommunicatorDestroyedException ex) + { + dispatchCallback(() => + { + _callback.connectFailed(this, ex); + }, null); + return; + } catch(Exception) { // diff --git a/csharp/test/Glacier2/sessionHelper/Client.cs b/csharp/test/Glacier2/sessionHelper/Client.cs index 969db0cfe61..e53263f9f20 100644 --- a/csharp/test/Glacier2/sessionHelper/Client.cs +++ b/csharp/test/Glacier2/sessionHelper/Client.cs @@ -253,6 +253,8 @@ public class Client _factory.setPort(12011); _factory.setProtocol(protocol); _session = _factory.connect("userid", "abc123"); + + System.Threading.Thread.Sleep(100); _session.destroy(); while(true) @@ -273,8 +275,6 @@ public class Client } } - - _factory = new Glacier2.SessionFactoryHelper(_initData, new SessionCalback2()); lock(this) { diff --git a/java/src/Glacier2/src/main/java/Glacier2/SessionHelper.java b/java/src/Glacier2/src/main/java/Glacier2/SessionHelper.java index b5bc909c113..83adf1fc6e1 100644 --- a/java/src/Glacier2/src/main/java/Glacier2/SessionHelper.java +++ b/java/src/Glacier2/src/main/java/Glacier2/SessionHelper.java @@ -516,6 +516,18 @@ public class SessionHelper { _communicator.setDefaultRouter(finder.getRouter()); } + catch(final Ice.CommunicatorDestroyedException ex) + { + dispatchCallback(new Runnable() + { + @Override + public void run() + { + _callback.connectFailed(SessionHelper.this, ex); + } + }, null); + return; + } catch(Exception ex) { // diff --git a/java/test/src/main/java/test/Glacier2/sessionHelper/Client.java b/java/test/src/main/java/test/Glacier2/sessionHelper/Client.java index 1135d01231f..2e91bb23dab 100644 --- a/java/test/src/main/java/test/Glacier2/sessionHelper/Client.java +++ b/java/test/src/main/java/test/Glacier2/sessionHelper/Client.java @@ -181,6 +181,18 @@ public class Client extends test.Util.Application _factory.setPort(12011); _factory.setProtocol(protocol); _session = _factory.connect("userid", "abc123"); + + while(true) + { + try + { + Thread.sleep(100); + break; + } + catch(java.lang.InterruptedException ex) + { + } + } _session.destroy(); while(true) |