gfe-relnote: Remove client-side support for Channel ID from QUIC. Not flag protected.
PiperOrigin-RevId: 247261939
Change-Id: Id2d70ab42cb47b76c783a06b7773871886c75c56
diff --git a/quic/platform/README.md b/quic/platform/README.md
new file mode 100644
index 0000000..6538de1
--- /dev/null
+++ b/quic/platform/README.md
@@ -0,0 +1,12 @@
+# QUIC platform
+
+This platform/ directory exists in order to allow QUIC code to be built on
+numerous platforms. It contains two subdirectories:
+
+- api/ contains platform independent class definitions for fundamental data
+ structures (e.g., IPAddress, SocketAddress, etc.).
+- impl/ contains platform specific implementations of these data structures.
+ The content of files in impl/ will vary depending on the platform.
+
+Code in the parent quic/ directory should not depend on any platform specific
+code, other than that found in impl/.
diff --git a/quic/platform/api/README.md b/quic/platform/api/README.md
new file mode 100644
index 0000000..d3de2e1
--- /dev/null
+++ b/quic/platform/api/README.md
@@ -0,0 +1,67 @@
+# 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.
+ QuicIntervalSet), the dependency is:
+
+ ```dot
+ digraph {
+ application -> quic_core -> quic_platform_api -> quic_platform_impl -> platform_infrastructure
+ application -> platform_infrastructure
+ }
+ ```
+
+- 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:
+
+ ```dot
+ digraph {
+ application -> quic_platform_impl -> platform_infrastructure
+ application -> quic_core -> quic_platform_api
+ quic_platform_impl -> quic_platform_api
+ application -> platform_infrastructure
+ }
+ ```
+
+ An example for such dependency is QuicClock.
+
+ Or
+
+ ```dot
+ digraph {
+ application -> quic_platform_impl -> platform_infrastructure
+ application -> quic_core -> quic_platform_api -> quic_platform_impl
+ quic_platform_impl -> quic_platform_api
+ application -> 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