rabbitmq-dotnet-client icon indicating copy to clipboard operation
rabbitmq-dotnet-client copied to clipboard

Minimal System.IO.Pipelines integration to prepare for full-async work

Open stebet opened this issue 2 years ago • 1 comments

Proposed Changes

This introduces System.IO.Pipelines into the RabbitMQ Client. I decided to take the minimal step required to add it, as a way to break down PR number #1199 into more manageable parts.

This has no API changes, it still has the Channels for transmission buffering (to be changed later), but instead of reading/writing directly to a BufferedStream, we are now using Pipelines which handle the buffering and back-pressure.

This paves the way forward to slowly get rid of the Channels as well, and to create a fully and proper asynchronous code paths for sending/receiving data in a performance manner.

Types of Changes

  • [ ] Bug fix (non-breaking change which fixes issue #NNNN)
  • [X] New feature (non-breaking change which adds functionality)
  • [ ] Breaking change (fix or feature that would cause an observable behavior change in existing systems)
  • [ ] Documentation improvements (corrections, new content, etc)
  • [ ] Cosmetic change (whitespace, formatting, etc)

Checklist

  • [X] I have read the CONTRIBUTING.md document
  • [X] I have signed the CA (see https://cla.pivotal.io/sign/rabbitmq)
  • [X] All tests pass locally with my changes
  • [ ] I have added tests that prove my fix is effective or that my feature works
  • [ ] I have added necessary documentation (if appropriate)
  • [ ] Any dependent changes have been merged and published in related repositories

stebet avatar Oct 13 '22 11:10 stebet

Thanks, I'll review this coming week.

lukebakken avatar Oct 14 '22 14:10 lukebakken

Thanks @danielmarbach ... as you can see I'm working through your PR review comments. Thanks a MILLION.

lukebakken avatar Feb 08 '23 00:02 lukebakken

Great to see traction here :) thanks @danielmarbach and @lukebakken. I've been less active lately while I'm transitioning into a new job as well as doing other OSS projects and public speaking, but the RabbitMQ client is always on my list of things to revisit :)

stebet avatar Feb 08 '23 22:02 stebet

Looks good to me 👍 Let's give other reviewers some time to comment before we merge.

Like your profile pic! I used to work on EVE Online for CCP Games :)

stebet avatar Feb 14 '23 21:02 stebet

I plan on merging this as soon as CI passes, FYI!

lukebakken avatar Mar 01 '23 20:03 lukebakken

Thank you @stebet

lukebakken avatar Mar 01 '23 22:03 lukebakken

Thanks for picking up the remaining work @lukebakken. Hopefully the full-async work can begin soon :)

stebet avatar Mar 01 '23 23:03 stebet