new object $string_connection: $connection;

var $root inited = 1;
var $string_connection buffer = `[];
var $string_connection line_buffer = [];

public method .init_string_connection() {

  buffer = `[];
  line_buffer = [];
};

driver method .parse() {
    arg incoming;
    var lines, line, index;

    // For the string connection, convert to strings first.
    catch any {
      lines = buf_to_strings(buffer + incoming);
      index = listlen(lines);
      buffer = lines[index];
      lines = lines.delete(index);
      line_buffer += lines;
      while (line_buffer) {
        line = line_buffer[1];
        line_buffer = line_buffer.delete(1);
        .parse_line(line);
      }
    } with {
      .log($parse_lib.traceback(traceback()));
    }
};