Skip to content

LineRingBuffer ​

Category: Shell

Source: line_ring_buffer.dart

Classes ​

LineRingBuffer ​

A ring buffer that keeps the most recent lines of output, bounded by both line count and total byte size.

Used to capture process output without unbounded memory growth — for example, a background job that runs for hours will only keep its last [maxLines] lines. Partial lines (text without a trailing newline) are held in an internal buffer until the next [addText] call completes them.

Constructor ​

dart
LineRingBuffer({required this.maxLines, required this.maxBytes})

Properties ​

PropertyTypeDescription
maxLinesint
maxBytesint
lineCountint getThe number of lines currently held, including any buffered partial line.
lineCountint getThe number of lines currently held, including any buffered partial line.

Methods ​

void addText(String text) ​

Appends raw text to the buffer, splitting it into lines on \n.

If [text] doesn't end with a newline, the trailing fragment is held internally and prepended to the next [addText] call. This means you can safely feed in arbitrary chunks from a process stream.

String tail({int lines = 200}) ​
String dump() ​

Released under the MIT License.