Skip to content
Snippets Groups Projects
  • Mark D. Roth's avatar
    57940617
    Improvements to grpc_byte_stream API and handling. · 57940617
    Mark D. Roth authored
    - Add shutdown() method (to be used in forthcoming call combiner code).
    - Use a vtable instead of storing method pointers in each instance.
    - Check all callers of pull() to make sure that they are properly
      handling errors.
    - Clarify ownership rules and attempt to adhere to them.
    - Added a new grpc_caching_byte_stream implementation, which is used in
      http_client_filter to avoid having to read the whole send_message byte
      stream before passing control down the stack.  (This class may also be
      used in the retry code I'm working on separately.)
    - As part of this, did a major rewrite of http_client_filter, which
      made the code more readable and fixed a number of potential bugs.
    
    Note that some of this code is hard to test right now, due to the fact
    that the send_message byte stream is always a slice_buffer stream, for
    which next() is always synchronous and no destruction is needed.
    However, some future work (specifically, my call combiner work and
    Craig's incremental send work) will start leveraging this.
    57940617
    History
    Improvements to grpc_byte_stream API and handling.
    Mark D. Roth authored
    - Add shutdown() method (to be used in forthcoming call combiner code).
    - Use a vtable instead of storing method pointers in each instance.
    - Check all callers of pull() to make sure that they are properly
      handling errors.
    - Clarify ownership rules and attempt to adhere to them.
    - Added a new grpc_caching_byte_stream implementation, which is used in
      http_client_filter to avoid having to read the whole send_message byte
      stream before passing control down the stack.  (This class may also be
      used in the retry code I'm working on separately.)
    - As part of this, did a major rewrite of http_client_filter, which
      made the code more readable and fixed a number of potential bugs.
    
    Note that some of this code is hard to test right now, due to the fact
    that the send_message byte stream is always a slice_buffer stream, for
    which next() is always synchronous and no destruction is needed.
    However, some future work (specifically, my call combiner work and
    Craig's incremental send work) will start leveraging this.