diff options
Diffstat (limited to 'java/src/IceMX/ThreadObserverI.java')
-rw-r--r-- | java/src/IceMX/ThreadObserverI.java | 60 |
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 |