// Path: src/main/java/com/statful/sender/Sender.java
// public interface Sender {
//     /**
//      * Sender method that gets a list of datapoints and sends them
//      *
//      * @param metrics     metrics to be sent. Each instance is responsible for creating the full metric line including tags
//      * @param sentHandler handler called if you want to be notified after the metrics are sent.
//      */
//     void send(@Nonnull List<DataPoint> metrics, @Nonnull Handler<AsyncResult<Void>> sentHandler);
// 
//     /**
//      * Sender method that gets a list of datapoints and sends them
//      *
//      * @param metrics metrics to be sent. Each instance is responsible for creating the full metric line including tags
//      */
//     void send(@Nonnull List<DataPoint> metrics);
// 
//     /**
//      * Stores metric in a buffer to be sent
//      *
//      * @param dataPoint metric to be stored
//      * @return true if the metric was inserted false otherwise
//      */
//     boolean addMetric(final DataPoint dataPoint);
// 
//     /**
//      * Closes the sender
//      *
//      * @param handler to execute when closed
//      */
//     void close(final Handler<AsyncResult<Void>> handler);
// }


import com.statful.sender.Sender;
import io.vertx.core.eventbus.EventBus;
package com.statful.client;


/**
 * Allows consumers to send custom metrics through the event bus
 */
public final class CustomMetricsConsumer {

    /**
     * Event bus address for custom metrics
     */
    public static final String ADDRESS = "com.statful.client.custom.metrics";
    /**
     * Event bus to listen to metrics messages
     */
    private final EventBus eventBus;

    /**
     * Metrics sender
     */
// Path: src/main/java/com/statful/sender/Sender.java
// public interface Sender {
//     /**
//      * Sender method that gets a list of datapoints and sends them
//      *
//      * @param metrics     metrics to be sent. Each instance is responsible for creating the full metric line including tags
//      * @param sentHandler handler called if you want to be notified after the metrics are sent.
//      */
//     void send(@Nonnull List<DataPoint> metrics, @Nonnull Handler<AsyncResult<Void>> sentHandler);
// 
//     /**
//      * Sender method that gets a list of datapoints and sends them
//      *
//      * @param metrics metrics to be sent. Each instance is responsible for creating the full metric line including tags
//      */
//     void send(@Nonnull List<DataPoint> metrics);
// 
//     /**
//      * Stores metric in a buffer to be sent
//      *
//      * @param dataPoint metric to be stored
//      * @return true if the metric was inserted false otherwise
//      */
//     boolean addMetric(final DataPoint dataPoint);
// 
//     /**
//      * Closes the sender
//      *
//      * @param handler to execute when closed
//      */
//     void close(final Handler<AsyncResult<Void>> handler);
// }


// Path: src/main/java/com/statful/client/CustomMetricsConsumer.java
import com.statful.sender.Sender;
import io.vertx.core.eventbus.EventBus;

package com.statful.client;


/**
 * Allows consumers to send custom metrics through the event bus
 */
public final class CustomMetricsConsumer {

    /**
     * Event bus address for custom metrics
     */
    public static final String ADDRESS = "com.statful.client.custom.metrics";
    /**
     * Event bus to listen to metrics messages
     */
    private final EventBus eventBus;

    /**
     * Metrics sender
     */
    private final Sender sender;