All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.feilong.lib.org.apache.http.impl.HttpConnectionMetricsImpl Maven / Gradle / Ivy

Go to download

feilong is a suite of core and expanded libraries that include utility classes, http, excel,cvs, io classes, and much much more.

The newest version!
/*
 * ====================================================================
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation.  For more
 * information on the Apache Software Foundation, please see
 * .
 *
 */

package com.feilong.lib.org.apache.http.impl;

import java.util.HashMap;
import java.util.Map;

import com.feilong.lib.org.apache.http.HttpConnectionMetrics;
import com.feilong.lib.org.apache.http.io.HttpTransportMetrics;

/**
 * Default implementation of the {@link HttpConnectionMetrics} interface.
 *
 * @since 4.0
 */
public class HttpConnectionMetricsImpl implements HttpConnectionMetrics{

    public static final String         REQUEST_COUNT        = "http.request-count";

    public static final String         RESPONSE_COUNT       = "http.response-count";

    public static final String         SENT_BYTES_COUNT     = "http.sent-bytes-count";

    public static final String         RECEIVED_BYTES_COUNT = "http.received-bytes-count";

    private final HttpTransportMetrics inTransportMetric;

    private final HttpTransportMetrics outTransportMetric;

    private long                       requestCount         = 0;

    private long                       responseCount        = 0;

    /**
     * The cache map for all metrics values.
     */
    private Map        metricsCache;

    public HttpConnectionMetricsImpl(final HttpTransportMetrics inTransportMetric, final HttpTransportMetrics outTransportMetric){
        super();
        this.inTransportMetric = inTransportMetric;
        this.outTransportMetric = outTransportMetric;
    }

    /* ------------------ Public interface method -------------------------- */

    @Override
    public long getReceivedBytesCount(){
        return this.inTransportMetric != null ? this.inTransportMetric.getBytesTransferred() : -1;
    }

    @Override
    public long getSentBytesCount(){
        return this.outTransportMetric != null ? this.outTransportMetric.getBytesTransferred() : -1;
    }

    @Override
    public long getRequestCount(){
        return this.requestCount;
    }

    public void incrementRequestCount(){
        this.requestCount++;
    }

    @Override
    public long getResponseCount(){
        return this.responseCount;
    }

    public void incrementResponseCount(){
        this.responseCount++;
    }

    @Override
    public Object getMetric(final String metricName){
        Object value = null;
        if (this.metricsCache != null){
            value = this.metricsCache.get(metricName);
        }
        if (value == null){
            if (REQUEST_COUNT.equals(metricName)){
                value = Long.valueOf(requestCount);
            }else if (RESPONSE_COUNT.equals(metricName)){
                value = Long.valueOf(responseCount);
            }else if (RECEIVED_BYTES_COUNT.equals(metricName)){
                return this.inTransportMetric != null ? Long.valueOf(this.inTransportMetric.getBytesTransferred()) : null;
            }else if (SENT_BYTES_COUNT.equals(metricName)){
                return this.outTransportMetric != null ? Long.valueOf(this.outTransportMetric.getBytesTransferred()) : null;
            }
        }
        return value;
    }

    public void setMetric(final String metricName,final Object obj){
        if (this.metricsCache == null){
            this.metricsCache = new HashMap<>();
        }
        this.metricsCache.put(metricName, obj);
    }

    @Override
    public void reset(){
        if (this.outTransportMetric != null){
            this.outTransportMetric.reset();
        }
        if (this.inTransportMetric != null){
            this.inTransportMetric.reset();
        }
        this.requestCount = 0;
        this.responseCount = 0;
        this.metricsCache = null;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy