package com.cloudera.flume.handlers.debug;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.cloudera.flume.conf.Context;
import com.cloudera.flume.conf.SinkFactory.SinkDecoBuilder;
import com.cloudera.flume.core.Event;
import com.cloudera.flume.core.EventSink;
import com.cloudera.flume.core.EventSinkDecorator;
import com.google.common.base.Preconditions;
EventSinkDecorator<S> {
static final Logger LOG = LoggerFactory.getLogger(IntervalDroppyEventSink.class);
int interval;
int count = 0;
super(s);
Preconditions.checkArgument(i > 0);
this.interval = i;
}
@Override
public void append(Event e)
throws IOException {
count++;
if (count % interval == 0) {
count = 0;
LOG.info("Dropped event: " + e);
return;
}
super.append(e);
}
public static SinkDecoBuilder
builder() {
return new SinkDecoBuilder() {
@Override
public EventSinkDecorator<EventSink>
build(Context context,
String... argv) {
Preconditions.checkArgument(argv.length == 1,
"usage: intervalDroppy(interval)");
int interval = Integer.parseInt(argv[0]);
return new IntervalDroppyEventSink<EventSink>(null, interval);
}
};
}
}