blob: a6699bd56bf7ade882796fcefde0ad80a85fcd2a [file] [log] [blame]
.. _module-pw_channel:
==========
pw_channel
==========
.. pigweed-module::
:name: pw_channel
``pw_channel`` provides features that are essential for efficient,
high-performance communications. The ``Channel`` API is:
- **Flow-control-aware**: Built-in backpressure ensures that data is only
requested when consumers are able to buffer and handle it.
- **Zero-copy**: Data transfers seamlessly throughout the stack without
copying between intermediate buffers or memory pools.
- **Composable**: Layers of the communications stack are swappable, allowing
more code reuse and configurability.
- **Asynchronous**: No need for dedicated threads or nested callbacks.
Not sure if ``pw_channel`` is right for you? Check out
:ref:`module-pw_channel-design-why` to learn how ``pw_channel`` handles
flow control, backpressure, composability, and more.
.. grid:: 2
.. grid-item-card:: :octicon:`code-square` Design
:link: module-pw_channel-design
:link-type: ref
:class-item: sales-pitch-cta-secondary
How pw_channel handles:
* Flow control
* Backpressure
* Composability
* Asynchronous operations
And more.
.. grid-item-card:: :octicon:`code-square` Reference
:link: module-pw_channel-reference
:link-type: ref
:class-item: sales-pitch-cta-secondary
API reference for:
* ``Channel``
* ``AnyChannel``
* ``ByteChannel``
* ``DatagramChannel``
And more.
.. toctree::
:hidden:
design
reference