summaryrefslogtreecommitdiff
path: root/java/src/IceMX/ThreadObserverI.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceMX/ThreadObserverI.java')
-rw-r--r--java/src/IceMX/ThreadObserverI.java60
1 files changed, 60 insertions, 0 deletions
diff --git a/java/src/IceMX/ThreadObserverI.java b/java/src/IceMX/ThreadObserverI.java
new file mode 100644
index 00000000000..79209c879e2
--- /dev/null
+++ b/java/src/IceMX/ThreadObserverI.java
@@ -0,0 +1,60 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2012 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 IceMX;
+
+public class ThreadObserverI extends Observer<ThreadMetrics> implements Ice.Instrumentation.ThreadObserver
+{
+ public void
+ stateChanged(final Ice.Instrumentation.ThreadState oldState, final Ice.Instrumentation.ThreadState newState)
+ {
+ _oldState = oldState;
+ _newState = newState;
+ forEach(_threadStateUpdate);
+ }
+
+ private MetricsUpdate<ThreadMetrics> _threadStateUpdate = new MetricsUpdate<ThreadMetrics>()
+ {
+ public void
+ update(ThreadMetrics v)
+ {
+ switch(_oldState)
+ {
+ case ThreadStateInUseForIO:
+ --v.inUseForIO;
+ break;
+ case ThreadStateInUseForUser:
+ --v.inUseForUser;
+ break;
+ case ThreadStateInUseForOther:
+ --v.inUseForOther;
+ break;
+ default:
+ break;
+ }
+ switch(_newState)
+ {
+ case ThreadStateInUseForIO:
+ ++v.inUseForIO;
+ break;
+ case ThreadStateInUseForUser:
+ ++v.inUseForUser;
+ break;
+ case ThreadStateInUseForOther:
+ ++v.inUseForOther;
+ break;
+ default:
+ break;
+ }
+ }
+ };
+
+ private Ice.Instrumentation.ThreadState _oldState;
+ private Ice.Instrumentation.ThreadState _newState;
+} \ No newline at end of file