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

io.mosip.registration.metrics.PacketMetrics Maven / Gradle / Ivy

package io.mosip.registration.metrics;

import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Tag;
import io.micrometer.core.instrument.binder.MeterBinder;
import io.mosip.registration.dao.RegistrationDAO;
import org.springframework.context.ApplicationContext;
import org.springframework.dao.DataAccessException;

import java.util.ArrayList;
import java.util.List;

import static java.util.Collections.emptyList;

public class PacketMetrics implements MeterBinder {

    private final Iterable tags;
    private ApplicationContext applicationContext;

    public PacketMetrics(ApplicationContext applicationContext) {
        this(emptyList(), applicationContext);
    }

    public PacketMetrics(Iterable tags, ApplicationContext applicationContext) {
        this.tags = tags;
        this.applicationContext = applicationContext;
    }


    @Override
    public void bindTo(MeterRegistry registry) {
        RegistrationDAO registrationDAO = applicationContext.getBean(RegistrationDAO.class);
        
        List result = null;

        try {
            result = registrationDAO.getStatusBasedCount();
        } catch (DataAccessException exception) {
            //This will fail during upgrade process
        }

        if(result != null) {
            for (Object[] entry : result) {
                List tagList = new ArrayList<>();
                tags.forEach(tag-> { tagList.add(tag); });
                tagList.add(Tag.of("client-state", entry[0] == null ? "NA" :(String) entry[0]));
                tagList.add(Tag.of("server-state", entry[1] == null ? "NA" : (String) entry[1]));
                Gauge.builder("packet.states", (Long)entry[2], Double::valueOf)
                        .strongReference(true).tags(tagList).register(registry);
            }
        }
        else {
            List tagList = new ArrayList<>();
            tags.forEach(tag-> { tagList.add(tag); });
            tagList.add(Tag.of("client-state", "NA"));
            tagList.add(Tag.of("server-state", "NA"));
            Gauge.builder("packet.states", 0, Double::valueOf)
                    .strongReference(true).tags(tagList).register(registry);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy