srecord noeq FollowTickerFile(File tickerFile) is AutoCloseable { settable int historyEntriesToGrab; // internal, may change TailFile tailFile; event historicLine(S line); event liveLine(S line); settable int maxLineLengthForTickerEntry = 200; void start { long fileSize = l(tickerFile); long start = max(0, fileSize-maxLineLengthForTickerEntry*historyEntriesToGrab); S text = loadTextFilePart(tickerFile, start, fileSize); LS lastTickerLines = takeLast(historyEntriesToGrab, lines(text)); for (line : lastTickerLines) historicLine(line); tailFile = tailFileLinewiseFromPosition(tickerFile, 250, fileSize, l0 liveLine); } close { dispose tailFile; } }