]> sjero.net Git - linphone/blob - p2pproxy/dependencies-src/jxse-src-2.5/impl/src/net/jxta/impl/resolver/resolverMeter/ResolverServiceMonitor.java
19530b3b16b8cc0c746817806af168cd36c05254
[linphone] / p2pproxy / dependencies-src / jxse-src-2.5 / impl / src / net / jxta / impl / resolver / resolverMeter / ResolverServiceMonitor.java
1 /*
2  * Copyright (c) 2001-2007 Sun Microsystems, Inc.  All rights reserved.
3  *  
4  *  The Sun Project JXTA(TM) Software License
5  *  
6  *  Redistribution and use in source and binary forms, with or without 
7  *  modification, are permitted provided that the following conditions are met:
8  *  
9  *  1. Redistributions of source code must retain the above copyright notice,
10  *     this list of conditions and the following disclaimer.
11  *  
12  *  2. Redistributions in binary form must reproduce the above copyright notice, 
13  *     this list of conditions and the following disclaimer in the documentation 
14  *     and/or other materials provided with the distribution.
15  *  
16  *  3. The end-user documentation included with the redistribution, if any, must 
17  *     include the following acknowledgment: "This product includes software 
18  *     developed by Sun Microsystems, Inc. for JXTA(TM) technology." 
19  *     Alternately, this acknowledgment may appear in the software itself, if 
20  *     and wherever such third-party acknowledgments normally appear.
21  *  
22  *  4. The names "Sun", "Sun Microsystems, Inc.", "JXTA" and "Project JXTA" must 
23  *     not be used to endorse or promote products derived from this software 
24  *     without prior written permission. For written permission, please contact 
25  *     Project JXTA at http://www.jxta.org.
26  *  
27  *  5. Products derived from this software may not be called "JXTA", nor may 
28  *     "JXTA" appear in their name, without prior written permission of Sun.
29  *  
30  *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
31  *  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
32  *  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SUN 
33  *  MICROSYSTEMS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
34  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
35  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
36  *  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
37  *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
38  *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
39  *  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40  *  
41  *  JXTA is a registered trademark of Sun Microsystems, Inc. in the United 
42  *  States and other countries.
43  *  
44  *  Please see the license information page at :
45  *  <http://www.jxta.org/project/www/license.html> for instructions on use of 
46  *  the license in source files.
47  *  
48  *  ====================================================================
49  *  
50  *  This software consists of voluntary contributions made by many individuals 
51  *  on behalf of Project JXTA. For more information on Project JXTA, please see 
52  *  http://www.jxta.org.
53  *  
54  *  This license is based on the BSD license adopted by the Apache Foundation. 
55  */
56
57 package net.jxta.impl.resolver.resolverMeter;
58
59
60 import net.jxta.meter.*;
61 import net.jxta.impl.meter.*;
62 import java.util.*;
63
64
65 /**
66  * The Service Monitor Metric for the standard Resolver Service
67  **/
68 public class ResolverServiceMonitor extends GenericServiceMonitor {
69     public static final String UNKNOWN_HANDLER = "--UNKNOWN-HANDLER--";
70         
71     private Hashtable queryHandlerMeters = new Hashtable();
72     private Hashtable srdiHandlerMeters = new Hashtable();
73     private Hashtable destinationMeters = new Hashtable();
74     private Hashtable sourceMeters = new Hashtable();
75         
76     private ResolverMeter resolverMeter = new ResolverMeter(this);
77         
78     private ResolverServiceMetric cumulativeResolverServiceMetric;
79
80     @Override
81     protected void init() {
82         cumulativeResolverServiceMetric = (ResolverServiceMetric) getCumulativeServiceMetric();
83         cumulativeResolverServiceMetric.setResolverMetric(resolverMeter.getCumulativeMetrics());
84     }
85
86     public ResolverMeter getResolverMeter() {
87         return resolverMeter;
88     }
89         
90     public synchronized QueryHandlerMeter registerQueryHandlerMeter(String handlerName) {
91         QueryHandlerMeter queryHandlerMeter = (QueryHandlerMeter) queryHandlerMeters.get(handlerName);
92         
93         if (queryHandlerMeter == null) { 
94             queryHandlerMeter = addQueryHandlerMeter(handlerName, true);
95         }
96
97         queryHandlerMeter.setRegistered(true);
98
99         return queryHandlerMeter;
100     }
101
102     public synchronized QueryHandlerMeter addQueryHandlerMeter(String handlerName, boolean registered) {
103         QueryHandlerMeter queryHandlerMeter = new QueryHandlerMeter(handlerName, this);
104
105         queryHandlerMeters.put(handlerName, queryHandlerMeter);
106         cumulativeResolverServiceMetric.addQueryHandlerMetric(queryHandlerMeter.getCumulativeMetrics());
107         queryHandlerMeter.setRegistered(registered);
108                 
109         return queryHandlerMeter;
110     }
111
112     public synchronized QueryHandlerMeter unregisterQueryHandlerMeter(String handlerName) {
113         QueryHandlerMeter queryHandlerMeter = getQueryHandlerMeter(handlerName);
114
115         queryHandlerMeter.setRegistered(false);
116
117         return queryHandlerMeter;
118     }
119
120     public QueryHandlerMeter getQueryHandlerMeter(String handlerName) {
121         QueryHandlerMeter queryHandlerMeter = (QueryHandlerMeter) queryHandlerMeters.get(handlerName);
122                 
123         if (queryHandlerMeter == null) {
124             queryHandlerMeter = addQueryHandlerMeter(handlerName, false);
125         }
126
127         return queryHandlerMeter;
128     }
129
130     public synchronized SrdiHandlerMeter registerSrdiHandlerMeter(String handlerName) {
131         SrdiHandlerMeter srdiHandlerMeter = (SrdiHandlerMeter) srdiHandlerMeters.get(handlerName);
132         
133         if (srdiHandlerMeter == null) { 
134             srdiHandlerMeter = addSrdiHandlerMeter(handlerName, true);
135         }
136
137         srdiHandlerMeter.setRegistered(true);
138
139         return srdiHandlerMeter;
140     }
141
142     public synchronized SrdiHandlerMeter addSrdiHandlerMeter(String handlerName, boolean registered) {
143         SrdiHandlerMeter srdiHandlerMeter = new SrdiHandlerMeter(handlerName);
144
145         srdiHandlerMeters.put(handlerName, srdiHandlerMeter);
146         cumulativeResolverServiceMetric.addSrdiHandlerMetric(srdiHandlerMeter.getCumulativeMetrics());
147         srdiHandlerMeter.setRegistered(registered);
148                 
149         return srdiHandlerMeter;
150     }
151
152     public synchronized SrdiHandlerMeter unregisterSrdiHandlerMeter(String handlerName) {
153         SrdiHandlerMeter srdiHandlerMeter = getSrdiHandlerMeter(handlerName);
154
155         srdiHandlerMeter.setRegistered(false);
156
157         return srdiHandlerMeter;
158     }
159
160     public SrdiHandlerMeter getSrdiHandlerMeter(String handlerName) {
161         SrdiHandlerMeter srdiHandlerMeter = (SrdiHandlerMeter) srdiHandlerMeters.get(handlerName);
162                 
163         if (srdiHandlerMeter == null) {
164             srdiHandlerMeter = addSrdiHandlerMeter(handlerName, false);
165         }
166
167         return srdiHandlerMeter;
168     }
169
170     @Override
171     protected ServiceMetric collectServiceMetrics() {
172         ResolverServiceMetric resolverServiceMetric = (ResolverServiceMetric) createServiceMetric();
173
174         boolean anyData = false;
175                 
176         for (Enumeration e = queryHandlerMeters.elements(); e.hasMoreElements();) {
177             QueryHandlerMeter queryHandlerMeter = (QueryHandlerMeter) e.nextElement();
178             QueryHandlerMetric queryHandlerMetric = queryHandlerMeter.collectMetrics(); // clears delta from meter
179
180             if (queryHandlerMetric != null) {
181                 resolverServiceMetric.addQueryHandlerMetric(queryHandlerMetric);
182                 anyData = true;
183             }
184         }
185
186         for (Enumeration e = srdiHandlerMeters.elements(); e.hasMoreElements();) {
187             SrdiHandlerMeter srdiHandlerMeter = (SrdiHandlerMeter) e.nextElement();
188             SrdiHandlerMetric srdiHandlerMetric = srdiHandlerMeter.collectMetrics(); // clears delta from meter
189
190             if (srdiHandlerMetric != null) {
191                 resolverServiceMetric.addSrdiHandlerMetric(srdiHandlerMetric);
192                 anyData = true;
193             }
194         }
195
196         ResolverMetric resolverMetric = resolverMeter.collectMetrics();
197
198         if (resolverMetric != null) {
199             resolverServiceMetric.setResolverMetric(resolverMetric);
200             anyData = true;
201         }
202
203         if (anyData) {
204             return resolverServiceMetric;
205         } else {
206             return null;
207         }
208     }
209
210     @Override
211     public ServiceMetric getServiceMetric(ServiceMonitorFilter serviceMonitorFilter, long fromTime, long toTime, int pulseIndex, long reportRate) {
212         int deltaReportRateIndex = monitorManager.getReportRateIndex(reportRate);
213         ResolverServiceMetric origMetric = (ResolverServiceMetric) deltaServiceMetrics[deltaReportRateIndex];
214
215         if (origMetric == null) {
216             return null;
217         } 
218
219         ResolverServiceMonitorFilter resolverServiceMonitorFilter = (ResolverServiceMonitorFilter) serviceMonitorFilter;
220
221         return origMetric.shallowCopy(resolverServiceMonitorFilter);
222     }
223
224     @Override
225     public ServiceMetric getCumulativeServiceMetric(ServiceMonitorFilter serviceMonitorFilter, long fromTime, long toTime) {
226         ResolverServiceMonitorFilter resolverServiceMonitorFilter = (ResolverServiceMonitorFilter) serviceMonitorFilter;
227         ResolverServiceMetric origMetric = (ResolverServiceMetric) cumulativeServiceMetric;
228
229         return origMetric.deepCopy(resolverServiceMonitorFilter);
230     }
231
232     /*
233      private ResolverServiceMetric copy(ResolverServiceMetric origMetric) {
234      ResolverServiceMetric resolverServiceMetric = new ResolverServiceMetric();
235      
236      for (Iterator i = origMetric.getQueryHandlerMetrics(); i.hasNext(); ) {
237      QueryHandlerMetric queryHandlerMetric = (QueryHandlerMetric)i.next();
238      resolverServiceMetric.addQueryHandlerMetric(queryHandlerMetric);
239      }
240
241      for (Iterator i = origMetric.getSrdiHandlerMetrics(); i.hasNext(); ) {
242      SrdiHandlerMetric srdiHandlerMetric = (SrdiHandlerMetric)i.next();
243      resolverServiceMetric.addSrdiHandlerMetric(srdiHandlerMetric);
244      }
245
246      return resolverServiceMetric;      
247      }
248      */                 
249 }