sclass TailFileLinewise { settable File file; settable long startOffset; settable int interval = 1000; TailFile tf; LineBuffer lineBuffer = new(voidfunc(S s) { newLine(s) }); event newLine(S line); void start { if (tf == null) ret; initialFileSize = l(file); tf = new TailFile(file, interval, s -> lineBuffer.append(s)); tf.l = startOffset; tf.start(); } bool readingHistory() { ret tf.currentFileSize() >= initialFileSize; } }