PeerMetricConverterFactory.java

  1. /*
  2.  * @copyright defined in LICENSE.txt
  3.  */

  4. package hera.transport;

  5. import static org.slf4j.LoggerFactory.getLogger;

  6. import hera.api.function.Function1;
  7. import hera.api.model.PeerMetric;
  8. import hera.util.Base58Utils;
  9. import org.slf4j.Logger;
  10. import types.Metric;

  11. public class PeerMetricConverterFactory {

  12.   protected final transient Logger logger = getLogger(getClass());

  13.   protected final Function1<PeerMetric, Metric.PeerMetric> domainConverter =
  14.       new Function1<PeerMetric, Metric.PeerMetric>() {

  15.         @Override
  16.         public Metric.PeerMetric apply(final PeerMetric domainPeer) {
  17.           throw new UnsupportedOperationException();
  18.         }
  19.       };

  20.   protected final Function1<Metric.PeerMetric, PeerMetric> rpcConverter =
  21.       new Function1<Metric.PeerMetric, PeerMetric>() {

  22.         @Override
  23.         public PeerMetric apply(final Metric.PeerMetric rpcPeerMetric) {
  24.           logger.trace("Rpc peer metric to convert: {}", rpcPeerMetric);
  25.           final PeerMetric domainPeerMetric = PeerMetric.newBuilder()
  26.               .peerId(Base58Utils.encode(rpcPeerMetric.getPeerID().toByteArray()))
  27.               .sumIn(rpcPeerMetric.getSumIn())
  28.               .sumOut(rpcPeerMetric.getSumOut())
  29.               .averageIn(rpcPeerMetric.getAvrIn())
  30.               .averageOut(rpcPeerMetric.getAvrOut())
  31.               .build();
  32.           logger.trace("Domain peer metric converted: {}", domainPeerMetric);
  33.           return domainPeerMetric;
  34.         }
  35.       };

  36.   public ModelConverter<PeerMetric, Metric.PeerMetric> create() {
  37.     return new ModelConverter<PeerMetric, Metric.PeerMetric>(domainConverter, rpcConverter);
  38.   }

  39. }