Package com.codahale.metrics.jetty9

Source Code of com.codahale.metrics.jetty9.InstrumentedConnector

package com.codahale.metrics.jetty9;

import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
import org.eclipse.jetty.io.ByteBufferPool;
import org.eclipse.jetty.server.*;
import org.eclipse.jetty.util.annotation.Name;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.util.thread.Scheduler;

import java.util.concurrent.Executor;

import static com.codahale.metrics.MetricRegistry.name;
import static org.eclipse.jetty.server.AbstractConnectionFactory.getFactories;

public class InstrumentedConnector extends ServerConnector {
    public InstrumentedConnector(@Name("registry") MetricRegistry registry,
                                 @Name("name") String name,
                                 @Name("server") Server server) {
        this(registry, name, server, null, null, null, 0, 0, new HttpConnectionFactory());
    }

    public InstrumentedConnector(@Name("registry") MetricRegistry registry,
                                 @Name("name") String name,
                                 @Name("server") Server server,
                                 @Name("factories") ConnectionFactory... factories) {
        this(registry, name, server, null, null, null, 0, 0, factories);
    }

    public InstrumentedConnector(@Name("registry") MetricRegistry registry,
                                 @Name("name") String name,
                                 @Name("server") Server server,
                                 @Name("sslContextFactory") SslContextFactory sslContextFactory) {
        this(registry, name, server, null, null, null, 0, 0,
             getFactories(sslContextFactory, new HttpConnectionFactory()));
    }

    public InstrumentedConnector(@Name("registry") MetricRegistry registry,
                                 @Name("name") String name,
                                 @Name("server") Server server,
                                 @Name("sslContextFactory") SslContextFactory sslContextFactory,
                                 @Name("factories") ConnectionFactory... factories) {
        this(registry, name, server, null, null, null, 0, 0, getFactories(sslContextFactory, factories));

    }

    public InstrumentedConnector(@Name("registry") MetricRegistry registry,
                                 @Name("name") String name,
                                 @Name("server") Server server,
                                 @Name("executor") Executor executor,
                                 @Name("scheduler") Scheduler scheduler,
                                 @Name("bufferPool") ByteBufferPool bufferPool,
                                 @Name("acceptors") int acceptors,
                                 @Name("selectors") int selectors,
                                 @Name("factories") ConnectionFactory... factories) {
        super(server, executor, scheduler, bufferPool, acceptors, selectors,
              instrument(factories, registry, name));
        setName(name);
    }

    private static ConnectionFactory[] instrument(ConnectionFactory[] factories,
                                                  MetricRegistry registry,
                                                  String name) {
        final ConnectionFactory[] instrumented = new ConnectionFactory[factories.length];
        for (int i = 0; i < factories.length; i++) {
            final Timer timer = registry.timer(name(ServerConnector.class, name, "connections"));
            instrumented[i] = new InstrumentedConnectionFactory(factories[i], timer);
        }
        return instrumented;
    }
}
TOP

Related Classes of com.codahale.metrics.jetty9.InstrumentedConnector

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.