1 // 2 // Copyright (c) ZeroC, Inc. All rights reserved. 3 // 4 5 package IceInternal; 6 7 public class ThreadObserverI 8 extends IceMX.ObserverWithDelegate<IceMX.ThreadMetrics, Ice.Instrumentation.ThreadObserver> 9 implements Ice.Instrumentation.ThreadObserver 10 { 11 @Override 12 public void stateChanged(final Ice.Instrumentation.ThreadState oldState, final Ice.Instrumentation.ThreadState newState)13 stateChanged(final Ice.Instrumentation.ThreadState oldState, final Ice.Instrumentation.ThreadState newState) 14 { 15 _oldState = oldState; 16 _newState = newState; 17 forEach(_threadStateUpdate); 18 if(_delegate != null) 19 { 20 _delegate.stateChanged(oldState, newState); 21 } 22 } 23 24 private MetricsUpdate<IceMX.ThreadMetrics> _threadStateUpdate = new MetricsUpdate<IceMX.ThreadMetrics>() 25 { 26 @Override 27 public void 28 update(IceMX.ThreadMetrics v) 29 { 30 switch(_oldState) 31 { 32 case ThreadStateInUseForIO: 33 --v.inUseForIO; 34 break; 35 case ThreadStateInUseForUser: 36 --v.inUseForUser; 37 break; 38 case ThreadStateInUseForOther: 39 --v.inUseForOther; 40 break; 41 default: 42 break; 43 } 44 switch(_newState) 45 { 46 case ThreadStateInUseForIO: 47 ++v.inUseForIO; 48 break; 49 case ThreadStateInUseForUser: 50 ++v.inUseForUser; 51 break; 52 case ThreadStateInUseForOther: 53 ++v.inUseForOther; 54 break; 55 default: 56 break; 57 } 58 } 59 }; 60 61 private Ice.Instrumentation.ThreadState _oldState; 62 private Ice.Instrumentation.ThreadState _newState; 63 } 64