summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2006-06-01 15:31:11 +0000
committerDwayne Boone <dwayne@zeroc.com>2006-06-01 15:31:11 +0000
commitdba48e6aa9feac17c9ee2c02adb90a01c9ebae8e (patch)
tree1f890a3a36238d21c10bb7adba0dc979c2905689 /java/src
parentAdded a bunch of missing dependencies on Glacier2 to a few IceGrid (diff)
downloadice-dba48e6aa9feac17c9ee2c02adb90a01c9ebae8e.tar.bz2
ice-dba48e6aa9feac17c9ee2c02adb90a01c9ebae8e.tar.xz
ice-dba48e6aa9feac17c9ee2c02adb90a01c9ebae8e.zip
Added thread start/stop hooks
Diffstat (limited to 'java/src')
-rw-r--r--java/src/Ice/ConnectionI.java12
-rw-r--r--java/src/Ice/InitializationData.java1
-rw-r--r--java/src/Ice/ThreadNotification.java16
-rw-r--r--java/src/IceInternal/ThreadPool.java10
4 files changed, 39 insertions, 0 deletions
diff --git a/java/src/Ice/ConnectionI.java b/java/src/Ice/ConnectionI.java
index 53521ad6404..538950f53a8 100644
--- a/java/src/Ice/ConnectionI.java
+++ b/java/src/Ice/ConnectionI.java
@@ -2431,6 +2431,11 @@ public final class ConnectionI extends IceInternal.EventHandler implements Conne
public void
run()
{
+ if(ConnectionI.this._instance.initializationData().threadHook != null)
+ {
+ ConnectionI.this._instance.initializationData().threadHook.start();
+ }
+
try
{
ConnectionI.this.run();
@@ -2439,6 +2444,13 @@ public final class ConnectionI extends IceInternal.EventHandler implements Conne
{
ConnectionI.this.error("exception in thread per connection", ex);
}
+ finally
+ {
+ if(ConnectionI.this._instance.initializationData().threadHook != null)
+ {
+ ConnectionI.this._instance.initializationData().threadHook.stop();
+ }
+ }
}
}
private Thread _threadPerConnection;
diff --git a/java/src/Ice/InitializationData.java b/java/src/Ice/InitializationData.java
index 1e1bc3ba34b..a5ea98908e2 100644
--- a/java/src/Ice/InitializationData.java
+++ b/java/src/Ice/InitializationData.java
@@ -20,4 +20,5 @@ public final class InitializationData
public Logger logger;
public Stats stats;
public java.util.Map defaultContext;
+ public ThreadNotification threadHook;
}
diff --git a/java/src/Ice/ThreadNotification.java b/java/src/Ice/ThreadNotification.java
new file mode 100644
index 00000000000..9d11a72a4fb
--- /dev/null
+++ b/java/src/Ice/ThreadNotification.java
@@ -0,0 +1,16 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2006 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+package Ice;
+
+public interface ThreadNotification
+{
+ void start();
+ void stop();
+}
diff --git a/java/src/IceInternal/ThreadPool.java b/java/src/IceInternal/ThreadPool.java
index 5538bc9af22..020c54ff3e6 100644
--- a/java/src/IceInternal/ThreadPool.java
+++ b/java/src/IceInternal/ThreadPool.java
@@ -1228,6 +1228,11 @@ public final class ThreadPool
public void
run()
{
+ if(_instance.initializationData().threadHook != null)
+ {
+ _instance.initializationData().threadHook.start();
+ }
+
BasicStream stream = new BasicStream(_instance);
boolean promote;
@@ -1275,6 +1280,11 @@ public final class ThreadPool
{
trace("run() terminated");
}
+
+ if(_instance.initializationData().threadHook != null)
+ {
+ _instance.initializationData().threadHook.stop();
+ }
}
}