
com.flozano.metrics.client.statsd.MetricArrayToBytesEncoder Maven / Gradle / Ivy
The newest version!
package com.flozano.metrics.client.statsd;
import static java.util.Objects.requireNonNull;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.function.Consumer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.flozano.metrics.client.MetricValue;
import com.flozano.metrics.client.MetricsClient;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandler.Sharable;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageEncoder;
@Sharable
class MetricArrayToBytesEncoder extends MessageToMessageEncoder {
private static final Logger LOGGER = LoggerFactory
.getLogger(MetricsClient.class);
public static final int MAX_MTU = 800;
public static final byte[] SEPARATOR = "\n"
.getBytes(StandardCharsets.UTF_8);
public final int maxBytesPerPacket;
public MetricArrayToBytesEncoder(int maxBytesPerPacket) {
this.maxBytesPerPacket = validateMaxBytes(maxBytesPerPacket);
}
private static int validateMaxBytes(int maxBytesPerPacket) {
if (maxBytesPerPacket < 0 || maxBytesPerPacket > MAX_MTU) {
throw new IllegalArgumentException(
"maxBytesPerPacket must be between 0 and " + MAX_MTU);
}
return maxBytesPerPacket;
}
@Override
public boolean acceptOutboundMessage(Object msg) throws Exception {
return msg != null && msg instanceof MetricValue[];
}
@Override
protected void encode(ChannelHandlerContext ctx, MetricValue[] msg,
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy