A line reader over source that accepts lines of up to limit bytes (not counting the line
ending). The limit stops a peer that never sends a newline from filling memory.
Io :: #import "Extensions/Io";
Io.io_run(() {
near, far := Io.make_pipe();
defer Io.close(near);
defer Io.close(far);
Io.write(Io.writer_of(far), "one\r\ntwo\n");
Io.shutdown_write(far);
lines := Io.make_line_reader(Io.reader_of(near), limit = 1024);
defer Io.free_line_reader(*lines);
line, error := Io.read_line(*lines);
assert(error == .NONE && line == "one");
});make_line_reader :: (source: Reader, limit := DEFAULT_LINE_LIMIT) -> Line_Reader
Parameters
- source: Reader
- limit := DEFAULT_LINE_LIMIT