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

ch.squaredesk.nova.comm.rpc.RpcServerMetricsCollector Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) Squaredesk GmbH and Oliver Dotzauer.
 *
 * This program is distributed under the squaredesk open source license. See the LICENSE file
 * distributed with this work for additional information regarding copyright ownership. You may also
 * obtain a copy of the license at
 *
 *   https://squaredesk.ch/license/oss/LICENSE
 */

package ch.squaredesk.nova.comm.rpc;

import ch.squaredesk.nova.metrics.Metrics;
import io.dropwizard.metrics5.Meter;

public class RpcServerMetricsCollector {
    private final Metrics metrics;
    private final String identifierPrefix;
    private final Meter totalNumberOfReceivedRequests;
    private final Meter totalNumberOfCompletedRequests;
    private final Meter totalNumberOfErrorRequests;

    RpcServerMetricsCollector(String identifier, Metrics metrics) {
        this.metrics = metrics;
        this.identifierPrefix = Metrics.name("rpcServer", identifier).toString();
        totalNumberOfReceivedRequests = metrics.getMeter(this.identifierPrefix,"requests","total");
        totalNumberOfCompletedRequests = metrics.getMeter(this.identifierPrefix,"completed","total");
        totalNumberOfErrorRequests = metrics.getMeter(this.identifierPrefix,"error","total");
    }


    public void requestReceived (Object request) {
        String id = request == null ? "null" : request.getClass().getSimpleName();
        Meter specificMeter = metrics.getMeter(identifierPrefix, "requests", id);
        mark(specificMeter,totalNumberOfReceivedRequests);
    }

    public void requestCompleted(Object request, Object reply) {
        String id = request == null ? "null" : request.getClass().getSimpleName();
        Meter specificMeter = metrics.getMeter(identifierPrefix, "completed", id);
        mark(specificMeter, totalNumberOfCompletedRequests);
    }

    public void requestCompletedExceptionally(Object request, Throwable error) {
        String id = request == null ? "null" : request.getClass().getSimpleName();
        Meter specificMeter = metrics.getMeter(identifierPrefix, "error", id);
        mark(specificMeter, totalNumberOfErrorRequests);
    }

    private void mark(Meter... meters) {
        for (Meter m : meters) {
            m.mark();
        }
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy