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

io.vlingo.telemetry.plugin.mailbox.TelemetryMessage Maven / Gradle / Ivy

Go to download

The reactive metrics collector plugin for the vlingo/platform, including support for vlingo/actors, vlingo/http, vlingo/lattice, vlingo/streams, and others.

There is a newer version: 1.7.5
Show newest version
// Copyright © 2012-2018 Vaughn Vernon. All rights reserved.
//
// This Source Code Form is subject to the terms of the
// Mozilla Public License, v. 2.0. If a copy of the MPL
// was not distributed with this file, You can obtain
// one at https://mozilla.org/MPL/2.0/.

package io.vlingo.telemetry.plugin.mailbox;

import java.util.function.Consumer;

import io.vlingo.actors.Actor;
import io.vlingo.actors.Message;
import io.vlingo.common.Completes;

public class TelemetryMessage implements Message {
  private final Message delegate;
  private final MailboxTelemetry telemetry;

  public TelemetryMessage(final Message delegate, final MailboxTelemetry telemetry) {
    this.delegate = delegate;
    this.telemetry = telemetry;
  }

  @Override
  public Actor actor() {
    return delegate.actor();
  }

  @Override
  public void deliver() {
    try {
      delegate.deliver();
      telemetry.onReceiveMessage(delegate);
    } catch (RuntimeException ex) {
      telemetry.onDeliverMessageFailed(delegate, ex);
    }
  }

  @Override
  public Class protocol() {
    return delegate.protocol();
  }

  @Override
  public String representation() {
    return delegate.representation();
  }

  @Override
  public boolean isStowed() {
    return delegate.isStowed();
  }

  @Override
  public void set(final Actor actor, final Class protocol, final Consumer consumer, final Completes completes, final String representation) {
    delegate.set(actor, protocol, consumer, completes, representation);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy