package org.archive.cdxserver.processor;
import java.util.LinkedList;
import org.archive.format.cdx.CDXLine;
public class LastNLineProcessor extends WrappedProcessor {
protected LinkedList<CDXLine> lines;
protected int limit = 1;
public LastNLineProcessor(BaseProcessor output, int limit)
{
super(output);
this.lines = new LinkedList<CDXLine>();
this.limit = limit;
}
@Override
public int writeLine(CDXLine line) {
lines.add(line);
if (lines.size() > limit) {
lines.removeFirst();
}
return 0;
}
protected void flush()
{
for (CDXLine line : lines) {
inner.writeLine(line);
}
lines.clear();
}
@Override
public void writeResumeKey(String resumeKey) {
if (!lines.isEmpty()) {
flush();
}
inner.writeResumeKey(resumeKey);
}
@Override
public void end() {
if (!lines.isEmpty()) {
flush();
}
inner.end();
}
}