diff options
Diffstat (limited to 'chromium/net/third_party/quiche/src/quiche/quic/platform/api/README.md')
-rw-r--r-- | chromium/net/third_party/quiche/src/quiche/quic/platform/api/README.md | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/chromium/net/third_party/quiche/src/quiche/quic/platform/api/README.md b/chromium/net/third_party/quiche/src/quiche/quic/platform/api/README.md new file mode 100644 index 00000000000..117e424d00c --- /dev/null +++ b/chromium/net/third_party/quiche/src/quiche/quic/platform/api/README.md @@ -0,0 +1,72 @@ +# QUIC platform API + +This directory contains the infrastructure blocks needed to support QUIC in +certain platform. These APIs act as interaction layers between QUIC core and +either the upper layer application (i.e. Chrome, Envoy) or the platform's own +infrastructure (i.e. logging, test framework and system IO). QUIC core needs the +implementations of these APIs to build and function appropriately. There is +unidirectional dependency from QUIC core to most of the APIs here, such as +QUIC_LOG and QuicMutex, but a few APIs also depend back on QUIC core's basic +QUIC data types, such as QuicClock and QuicSleep. + +- APIs used by QUIC core: + + Most APIs are used by QUIC core to interact with platform infrastructure + (i.e. QUIC_LOG) or to wrap around platform dependent data types (i.e. + QuicThread), the dependency is: + +``` +application -> quic_core -> quic_platform_api + | | + v v +platform_infrastructure <- quic_platform_impl +``` + +- APIs used by applications: + + Some APIs are used by applications to interact with QUIC core (i.e. + QuicMemSlice). For such APIs, their dependency model is: + +``` +application -> quic_core -> quic_platform_api + | ^ + | | + -------------------> quic_platform_impl + | | + | v + -------------------> platform_infrastructure +``` + + An example for such dependency +is QuicClock. + + Or + +``` +application -> quic_core -> quic_platform_api + | ^ + | | + | v + -------------------> quic_platform_impl + | | + | v + -------------------> platform_infrastructure +``` + + An example for such dependency +is QuicMemSlice. + +# Documentation of each API and its usage. + +QuicMemSlice +: QuicMemSlice is used to wrap application data and pass to QUIC stream's + write interface. It refers to a memory block of data which should be around + till QuicMemSlice::Reset() is called. It's upto each platform, to implement + it as reference counted or not. + +QuicClock +: QuicClock is used by QUIC core to get current time. Its instance is created + by applications and passed into QuicDispatcher and + QuicConnectionHelperInterface. + +TODO(b/131224336) add document for other APIs |