Skip to content
  • Philip Withnall's avatar
    agent: Add support for vectored I/O for sends · f7b15f14
    Philip Withnall authored and Olivier Crête's avatar Olivier Crête committed
    Add one new public function, nice_agent_send_messages_nonblocking(),
    which replaces nice_agent_send_full(). This isn’t an API break, because
    nice_agent_send_full() hasn’t been in a release yet. The new API allows
    sending multiple messages in a single call, and supports vectors of
    buffers to transmit the messages from.
    
    The existing nice_agent_send() API has been left untouched, although
    it’s a bit of a bugbear because it’s non-blocking and doesn’t fit with
    the new *_nonblocking() naming scheme. Oh well.
    
    This doesn’t bring any notable changes to the number of memcpy()s on the
    critical path: it remains at zero for the common cases and common socket
    types. It introduces the possibility for future work to eliminate some
    memcpy()s in more complex socket types, like tcp-turn and tcp-bsd, but
    these optimisations have not been made yet. FIXME comments have been
    added.
    
    This includes modifications to the test-send-recv unit test to cover the
    new API.
    f7b15f14