Lines Matching +full:background +full:- +full:layer

5 ------------
14 - Firstly, it seeks to offer the simple state machine model and a fully
17 - Secondly, it seeks to offer a turnkey solution with an in-the-box I/O
19 sockets-like way.
26 non-blocking basis. Determining *when* to do anything is largely the
31 spinning up background threads to ensure connections are serviced regularly (as
32 in our existing client-side thread assisted mode).
36 will operate and how many background resources (e.g. threads, other OS
40 ------------------
42 - **Unsynchronised Concurrency Model (UCM):** In the Unsynchronised Concurrency
45 either single-threaded or is otherwise responsible for doing synchronisation
49 primarily for single-threaded use as a simple state machine by advanced
52 - **Contentive Concurrency Model (CCM):** In the
54 multi-threaded usage of a QUIC connection (for example, parallel writes to
64 Under this model, APL calls by the application result in lock-wrapped
69 (NB-CCM) or which does support blocking (B-CCM). The blocking variant must
72 - **Thread Assisted Contentive Concurrency Model (TA-CCM):** This is currently
73 implemented by our thread assisted mode for client-side QUIC usage. It does
75 Model (WCM) below. Instead, it simply spawns a background thread which ensures
83 - **Worker Concurrency Model (WCM):** In the Worker Concurrency Model,
84 a background worker thread is spawned to manage connection processing. All
89 Internal dataflow for application data can be managed in a zero-copy way to
101--------|----------------|-----------------------|--------------------|---------------------------
104 | TA-CCM† | | MT (Contentive) | Optional | Mutex, Thread, (Notifier)…
111 - **Blocking Supported:** Whether blocking calls to e.g. `SSL_read` can be
117 - **OS Resources:** “Mutex” refers to mutex and condition variable resources.
123 - **Timer Events:** Is an application responsible for ensuring QUIC timeout
126 - **RX Steering:** The matter of RX steering will be discussed in detail in a
131 on an in-process basis.
137 - **Core State Affinity:** Which threads are allowed to touch the QUIC core
141 ------------
143 To recap, the API Personality Layer (APL) refers to the code in `quic_impl.c`
159 As such, the concept of a **Concurrency Management Layer (CML)** is introduced.
161 dispatching in-thread mutations of QUIC core objects when operating under CCM,
164 ![Concurrency Models Diagram](images/quic-concurrency-models.svg)
168 - **Direct CML (DCML)**, in which core objects are worked on in the same thread
171 - **Worker CML (WCML)**, in which core objects are managed by a worker thread
173 (WCML-FE) and back end (WCML-BE).
179 ----------
187 destroyed. A pipe is a *unidirectional* transport for byte streams. Zero-copy
208 - a CML pipe class;
209 - a CML *selector*.
225 - Request
226 - Notification
227 - App Send
228 - App Recv
234 The “Request” and “App Send” classes expose send-only streams, and the
235 “Notification” and “App Recv” classes expose receive-only streams.
254 number of bytes which can currently be written to a send-only pipe, or read from
255 a receive-only pipe, respectively.
280 - Request: Reset Stream (error code: u64)
281 - Notification: Connection Terminated by Peer
283 **Example implementation of `SSL_write`.** An `SSL_write`-like API might be
299 if (...->conn_terminated)
317 buf_len -= bytes_written;
328 * access or is purely single-threaded.
337 * WCML this might e.g. start background threads; for the DCML it is likely to
338 * be a no-op (but must still be called).
405 * - it is a sending pipe and one or more bytes can now be written;
406 * - it is a receiving pipe and one or more bytes can now be read.