package com.cloudera.flume.reporter.sampler;
import java.io.IOException;
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;
public class IntervalSampler<S
extends EventSink>
extends EventSinkDecorator<S> {
int interval;
int count = 0;
super(s);
this.interval = inteval;
}
@Override
public void append(Event e)
throws IOException {
if (count % interval == 0) {
getSink().append(e);
count = 1;
return;
}
count++;
}
public static SinkDecoBuilder
builder() {
return new SinkDecoBuilder() {
@Override
public EventSinkDecorator<EventSink>
build(Context context,
String... argv) {
if (argv.length != 1) {
throw new IllegalArgumentException(
"usage: intervalSampler(intervalsize)");
}
int interval = Integer.parseInt(argv[0]);
return new IntervalSampler<EventSink>(null, interval);
}
};
}
}