org.Cherry.Modules.Web.Engine.MetricsService.java Source code

Java tutorial

Introduction

Here is the source code for org.Cherry.Modules.Web.Engine.MetricsService.java

Source

/*******************************************************************************
 * Copyright (c) 2013-2014 Cherry Platform
 *
 * The contents of this file are subject to the terms of one of the following
 * open source licenses: Apache 2.0 or LGPL 3.0 or LGPL 2.1 or CDDL 1.0 or EPL
 * 1.0 (the "Licenses"). You can select the license that you prefer but you may
 * not use this file except in compliance with one of these Licenses.
 *
 * You can obtain a copy of the Apache 2.0 license at
 * http://www.opensource.org/licenses/apache-2.0
 *
 * You can obtain a copy of the LGPL 3.0 license at
 * http://www.opensource.org/licenses/lgpl-3.0
 *
 * You can obtain a copy of the LGPL 2.1 license at
 * http://www.opensource.org/licenses/lgpl-2.1
 *
 * You can obtain a copy of the CDDL 1.0 license at
 * http://www.opensource.org/licenses/cddl1
 *
 * You can obtain a copy of the EPL 1.0 license at
 * http://www.opensource.org/licenses/eclipse-1.0
 *
 * See the Licenses for the specific language governing permissions and
 * limitations under the Licenses.
 *
 *
 * Cherry Platform is a registered trademark of Sabadios
 *
 * Contributors:
 * Cristian Malinescu - initial design, API and implementation
 *******************************************************************************/
package org.Cherry.Modules.Web.Engine;

import java.lang.ref.WeakReference;

import javax.inject.Singleton;

import org.Cherry.Core.ServiceTemplate;
import org.apache.http.HttpConnectionMetrics;
import org.apache.http.HttpServerConnection;
import org.slf4j.Logger;

@Singleton
class MetricsService extends ServiceTemplate {
    public void examine(final HttpServerConnection connection) {
        if (null != connection && log.isDebugEnabled() && !connection.isOpen()) {
            log.debug("Connection [{}] closed. Capturing metrics.", connection);

            final HttpConnectionMetrics metrics = connection.getMetrics();

            final WeakReference<StringBuilder> sb = new WeakReference<StringBuilder>(
                    new StringBuilder("{'connection_metrics':{'requests':'"));

            sb.get().append(metrics.getRequestCount()).append("','responses':'").append(metrics.getResponseCount())
                    .append("', 'received_bytes':'").append(metrics.getReceivedBytesCount())
                    .append("', 'sent_bytes':'").append(metrics.getSentBytesCount()).append("'}}");

            log.debug("[{}]", sb.get().toString());
        }
    }

    public MetricsService() {
    }

    static private final Logger log = Loggers.Metrics.getLogger();

    private static final long serialVersionUID = 1L;
}