From dda864793e2de00159f268d910b95e98f21525ae Mon Sep 17 00:00:00 2001 From: Hugo Landau Date: Mon, 28 Nov 2022 13:18:53 +0000 Subject: [PATCH] QUIC I/O Architecture Design: Add block diagram, tweak wording Reviewed-by: Tomas Mraz Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/19770) --- .../quic-design/images/quic-io-arch-1.png | Bin 0 -> 11113 bytes doc/designs/quic-design/quic-io-arch.md | 10 ++++++---- 2 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 doc/designs/quic-design/images/quic-io-arch-1.png diff --git a/doc/designs/quic-design/images/quic-io-arch-1.png b/doc/designs/quic-design/images/quic-io-arch-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3c6ccba27f72c7c2a92bb9e2573115ea37184e48 GIT binary patch literal 11113 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 literal 0 Hc-jL100001 diff --git a/doc/designs/quic-design/quic-io-arch.md b/doc/designs/quic-design/quic-io-arch.md index 09115e65a22..403e3a11e0a 100644 --- a/doc/designs/quic-design/quic-io-arch.md +++ b/doc/designs/quic-design/quic-io-arch.md @@ -104,10 +104,10 @@ parallel threads. Under this model, there would be three threads: This has a large number of disadvantages: - There is a hard requirement for threading functionality in order to be - able to support blocking semantics at the application level. Use of blocking - semantics at the application level will have a hard requirement on use of the - thread assisted mode. In environments where threading support is not available - or desired, our APIs will only be usable in a non-blocking fashion. + able to support blocking semantics at the application level. Applications + which require blocking semantics would only be able to function in thread + assisted mode. In environments where threading support is not available or + desired, our APIs would only be usable in a non-blocking fashion. - Several threads are spawned which the application is not in control of. This undermines our general approach of providing the application with control @@ -282,6 +282,8 @@ non-blocking I/O internally. Applications can use blocking or non-blocking I/O at the libssl API level. Network-level BIOs must operate in a non-blocking mode or be configurable by QUIC to this end. +![Block Diagram](images/quic-io-arch-1.png "Block Diagram") + ### Support of arbitrary BIOs We need to support not just socket FDs but arbitrary BIOs as the basis for the -- 2.47.2