Skip to content
Snippets Groups Projects
  • Nat Goodspeed's avatar
    e92c3113
    Add LLProcess::ReadPipe::find() methods, with corresponding npos. · e92c3113
    Nat Goodspeed authored
    If it's useful to have contains() to tell you whether incoming data contains a
    particular substring, and if it's useful for contains() and peek() to accept
    an offset within that data, then it's useful to allow you to get the offset of
    a desired substring within that data. But of course a find() returning offset
    needs something like std::string::npos for "not found"; borrow that
    convention.
    Support both find(const std::string&) and find(char); the latter permits a
    more efficient implementation. In fact, make find(string) recognize a string
    of length 1 and leverage the find(char) implementation.
    Given that, reimplement contains(mumble) as shorthand for find(mumble) != npos.
    Implement find() overloads using std::search() and std::find() on
    boost::asio::streambuf character iterators, rather than copying to std::string
    and then using string search like previous contains() implementation.
    Reimplement WritePipeImpl::tick() and ReadPipeImpl::tick() to write/read
    directly from/to boost::asio::streambuf data, instead of copying to/from a
    temporary flat buffer.
    As long as ReadPipeImpl::tick() keeps successfully filling buffers, keep
    reading. Previous implementation would only handle a long child write over
    successive tick() calls. Stop on read error or when we come up short.
    e92c3113
    History
    Add LLProcess::ReadPipe::find() methods, with corresponding npos.
    Nat Goodspeed authored
    If it's useful to have contains() to tell you whether incoming data contains a
    particular substring, and if it's useful for contains() and peek() to accept
    an offset within that data, then it's useful to allow you to get the offset of
    a desired substring within that data. But of course a find() returning offset
    needs something like std::string::npos for "not found"; borrow that
    convention.
    Support both find(const std::string&) and find(char); the latter permits a
    more efficient implementation. In fact, make find(string) recognize a string
    of length 1 and leverage the find(char) implementation.
    Given that, reimplement contains(mumble) as shorthand for find(mumble) != npos.
    Implement find() overloads using std::search() and std::find() on
    boost::asio::streambuf character iterators, rather than copying to std::string
    and then using string search like previous contains() implementation.
    Reimplement WritePipeImpl::tick() and ReadPipeImpl::tick() to write/read
    directly from/to boost::asio::streambuf data, instead of copying to/from a
    temporary flat buffer.
    As long as ReadPipeImpl::tick() keeps successfully filling buffers, keep
    reading. Previous implementation would only handle a long child write over
    successive tick() calls. Stop on read error or when we come up short.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.