mobile/android/thirdparty/ch/boye/httpclientandroidlib/impl/HttpConnectionMetricsImpl.java

Wed, 31 Dec 2014 07:22:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:22:50 +0100
branch
TOR_BUG_3246
changeset 4
fc2d59ddac77
permissions
-rw-r--r--

Correct previous dual key logic pending first delivery installment.

     1 /*
     2  * ====================================================================
     3  * Licensed to the Apache Software Foundation (ASF) under one
     4  * or more contributor license agreements.  See the NOTICE file
     5  * distributed with this work for additional information
     6  * regarding copyright ownership.  The ASF licenses this file
     7  * to you under the Apache License, Version 2.0 (the
     8  * "License"); you may not use this file except in compliance
     9  * with the License.  You may obtain a copy of the License at
    10  *
    11  *   http://www.apache.org/licenses/LICENSE-2.0
    12  *
    13  * Unless required by applicable law or agreed to in writing,
    14  * software distributed under the License is distributed on an
    15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    16  * KIND, either express or implied.  See the License for the
    17  * specific language governing permissions and limitations
    18  * under the License.
    19  * ====================================================================
    20  *
    21  * This software consists of voluntary contributions made by many
    22  * individuals on behalf of the Apache Software Foundation.  For more
    23  * information on the Apache Software Foundation, please see
    24  * <http://www.apache.org/>.
    25  *
    26  */
    28 package ch.boye.httpclientandroidlib.impl;
    30 import java.util.HashMap;
    31 import ch.boye.httpclientandroidlib.HttpConnectionMetrics;
    32 import ch.boye.httpclientandroidlib.io.HttpTransportMetrics;
    34 /**
    35  * Default implementation of the {@link HttpConnectionMetrics} interface.
    36  *
    37  * @since 4.0
    38  */
    39 public class HttpConnectionMetricsImpl implements HttpConnectionMetrics {
    41     public static final String REQUEST_COUNT = "http.request-count";
    42     public static final String RESPONSE_COUNT = "http.response-count";
    43     public static final String SENT_BYTES_COUNT = "http.sent-bytes-count";
    44     public static final String RECEIVED_BYTES_COUNT = "http.received-bytes-count";
    46     private final HttpTransportMetrics inTransportMetric;
    47     private final HttpTransportMetrics outTransportMetric;
    48     private long requestCount = 0;
    49     private long responseCount = 0;
    51     /**
    52      * The cache map for all metrics values.
    53      */
    54     private HashMap metricsCache;
    56     public HttpConnectionMetricsImpl(
    57             final HttpTransportMetrics inTransportMetric,
    58             final HttpTransportMetrics outTransportMetric) {
    59         super();
    60         this.inTransportMetric = inTransportMetric;
    61         this.outTransportMetric = outTransportMetric;
    62     }
    64     /* ------------------  Public interface method -------------------------- */
    66     public long getReceivedBytesCount() {
    67         if (this.inTransportMetric != null) {
    68             return this.inTransportMetric.getBytesTransferred();
    69         } else {
    70             return -1;
    71         }
    72     }
    74     public long getSentBytesCount() {
    75         if (this.outTransportMetric != null) {
    76             return this.outTransportMetric.getBytesTransferred();
    77         } else {
    78             return -1;
    79         }
    80     }
    82     public long getRequestCount() {
    83         return this.requestCount;
    84     }
    86     public void incrementRequestCount() {
    87         this.requestCount++;
    88     }
    90     public long getResponseCount() {
    91         return this.responseCount;
    92     }
    94     public void incrementResponseCount() {
    95         this.responseCount++;
    96     }
    98     public Object getMetric(final String metricName) {
    99         Object value = null;
   100         if (this.metricsCache != null) {
   101             value = this.metricsCache.get(metricName);
   102         }
   103         if (value == null) {
   104             if (REQUEST_COUNT.equals(metricName)) {
   105                 value = new Long(requestCount);
   106             } else if (RESPONSE_COUNT.equals(metricName)) {
   107                 value = new Long(responseCount);
   108             } else if (RECEIVED_BYTES_COUNT.equals(metricName)) {
   109                 if (this.inTransportMetric != null) {
   110                     return new Long(this.inTransportMetric.getBytesTransferred());
   111                 } else {
   112                     return null;
   113                 }
   114             } else if (SENT_BYTES_COUNT.equals(metricName)) {
   115                 if (this.outTransportMetric != null) {
   116                     return new Long(this.outTransportMetric.getBytesTransferred());
   117                 } else {
   118                     return null;
   119                 }
   120             }
   121         }
   122         return value;
   123     }
   125     public void setMetric(final String metricName, Object obj) {
   126         if (this.metricsCache == null) {
   127             this.metricsCache = new HashMap();
   128         }
   129         this.metricsCache.put(metricName, obj);
   130     }
   132     public void reset() {
   133         if (this.outTransportMetric != null) {
   134             this.outTransportMetric.reset();
   135         }
   136         if (this.inTransportMetric != null) {
   137             this.inTransportMetric.reset();
   138         }
   139         this.requestCount = 0;
   140         this.responseCount = 0;
   141         this.metricsCache = null;
   142     }
   144 }

mercurial