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