package com.cloudera.flume.handlers.debug;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.cloudera.flume.conf.SourceFactory.SourceBuilder;
import com.cloudera.flume.core.Event;
import com.cloudera.flume.core.EventImpl;
import com.cloudera.flume.core.EventSource;
import com.google.common.base.Preconditions;
static final Logger LOG = LoggerFactory.getLogger(TextReaderSource.class);
String fname;
BufferedReader in;
this.fname = fname;
}
public Event
next()
throws IOException {
Preconditions.checkState(in != null,
"Need to open source before reading from it");
String s = in.readLine();
if (s == null)
return null;
Event e = new EventImpl(s.getBytes());
updateEventProcessingStats(e);
return e;
}
@Override
public void close()
throws IOException {
in.close();
LOG.info("File " + fname + " closed");
}
@Override
public void open()
throws IOException {
this.in = new BufferedReader(new FileReader(fname));
LOG.info("File " + fname + " opened");
}
public static SourceBuilder
builder() {
return new SourceBuilder() {
@Override
public EventSource
build(String... argv) {
if (argv.length != 1) {
throw new IllegalArgumentException("usage: text(filename)");
}
return new TextReaderSource(argv[0]);
}
};
}
}