• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/HttpConnectionMetricsImpl.java $
3  * $Revision: 548031 $
4  * $Date: 2007-06-17 04:28:38 -0700 (Sun, 17 Jun 2007) $
5  *
6  * ====================================================================
7  * Licensed to the Apache Software Foundation (ASF) under one
8  * or more contributor license agreements.  See the NOTICE file
9  * distributed with this work for additional information
10  * regarding copyright ownership.  The ASF licenses this file
11  * to you under the Apache License, Version 2.0 (the
12  * "License"); you may not use this file except in compliance
13  * with the License.  You may obtain a copy of the License at
14  *
15  *   http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing,
18  * software distributed under the License is distributed on an
19  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
20  * KIND, either express or implied.  See the License for the
21  * specific language governing permissions and limitations
22  * under the License.
23  * ====================================================================
24  *
25  * This software consists of voluntary contributions made by many
26  * individuals on behalf of the Apache Software Foundation.  For more
27  * information on the Apache Software Foundation, please see
28  * <http://www.apache.org/>.
29  *
30  */
31 
32 package org.apache.http.impl;
33 
34 import java.util.HashMap;
35 import org.apache.http.HttpConnectionMetrics;
36 import org.apache.http.io.HttpTransportMetrics;
37 
38 /**
39  * Implementation of the metrics interface.
40  *
41  * @deprecated Please use {@link java.net.URL#openConnection} instead.
42  *     Please visit <a href="http://android-developers.blogspot.com/2011/09/androids-http-clients.html">this webpage</a>
43  *     for further details.
44  */
45 @Deprecated
46 public class HttpConnectionMetricsImpl implements HttpConnectionMetrics {
47 
48     public static final String REQUEST_COUNT = "http.request-count";
49     public static final String RESPONSE_COUNT = "http.response-count";
50     public static final String SENT_BYTES_COUNT = "http.sent-bytes-count";
51     public static final String RECEIVED_BYTES_COUNT = "http.received-bytes-count";
52 
53     private final HttpTransportMetrics inTransportMetric;
54     private final HttpTransportMetrics outTransportMetric;
55     private long requestCount = 0;
56     private long responseCount = 0;
57 
58     /**
59      * The cache map for all metrics values.
60      */
61     private HashMap metricsCache;
62 
HttpConnectionMetricsImpl( final HttpTransportMetrics inTransportMetric, final HttpTransportMetrics outTransportMetric)63     public HttpConnectionMetricsImpl(
64             final HttpTransportMetrics inTransportMetric,
65             final HttpTransportMetrics outTransportMetric) {
66         super();
67         this.inTransportMetric = inTransportMetric;
68         this.outTransportMetric = outTransportMetric;
69     }
70 
71     /* ------------------  Public interface method -------------------------- */
72 
getReceivedBytesCount()73     public long getReceivedBytesCount() {
74         if (this.inTransportMetric != null) {
75             return this.inTransportMetric.getBytesTransferred();
76         } else {
77             return -1;
78         }
79     }
80 
getSentBytesCount()81     public long getSentBytesCount() {
82         if (this.outTransportMetric != null) {
83             return this.outTransportMetric.getBytesTransferred();
84         } else {
85             return -1;
86         }
87     }
88 
getRequestCount()89     public long getRequestCount() {
90         return this.requestCount;
91     }
92 
incrementRequestCount()93     public void incrementRequestCount() {
94         this.requestCount++;
95     }
96 
getResponseCount()97     public long getResponseCount() {
98         return this.responseCount;
99     }
100 
incrementResponseCount()101     public void incrementResponseCount() {
102         this.responseCount++;
103     }
104 
getMetric(final String metricName)105     public Object getMetric(final String metricName) {
106         Object value = null;
107         if (this.metricsCache != null) {
108             value = this.metricsCache.get(metricName);
109         }
110         if (value == null) {
111             if (REQUEST_COUNT.equals(metricName)) {
112                 value = new Long(requestCount);
113             } else if (RESPONSE_COUNT.equals(metricName)) {
114                 value = new Long(responseCount);
115             } else if (RECEIVED_BYTES_COUNT.equals(metricName)) {
116                 if (this.inTransportMetric != null) {
117                     return new Long(this.inTransportMetric.getBytesTransferred());
118                 } else {
119                     return null;
120                 }
121             } else if (SENT_BYTES_COUNT.equals(metricName)) {
122                 if (this.outTransportMetric != null) {
123                     return new Long(this.outTransportMetric.getBytesTransferred());
124                 } else {
125                     return null;
126                 }
127             }
128         }
129         return value;
130     }
131 
setMetric(final String metricName, Object obj)132     public void setMetric(final String metricName, Object obj) {
133         if (this.metricsCache == null) {
134             this.metricsCache = new HashMap();
135         }
136         this.metricsCache.put(metricName, obj);
137     }
138 
reset()139     public void reset() {
140         if (this.outTransportMetric != null) {
141             this.outTransportMetric.reset();
142         }
143         if (this.inTransportMetric != null) {
144             this.inTransportMetric.reset();
145         }
146         this.requestCount = 0;
147         this.responseCount = 0;
148         this.metricsCache = null;
149     }
150 
151 }
152