Lines Matching full:cml

159 As such, the concept of a **Concurrency Management Layer (CML)** is introduced.
160 The CML lives between the APL and the QUIC core code. It is responsible for
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
172 with communication via message passing. This CML is split into a front end
178 CML Design
181 The CML is designed to have as small an API surface area as possible to enable
183 is that complex APL calls are translated into simple operations on the CML.
185 At its core, the CML exposes some number of *pipes*. The number of pipes which
186 can be accessed via the CML varies as connections and streams are created and
190 The CML (`QUIC_CML`) allows the caller to refer to a pipe by providing an opaque
201 processing domain (i.e., per `QUIC_DOMAIN` / `QUIC_ENGINE` instance). The CML
208 - a CML pipe class;
209 - a CML *selector*.
211 The CML selector is a tagged union structure which specifies what pipe is to be
221 In other words, the CML selector selects the “object” to retrieve a pipe from.
223 The CML pipe class is one of the following values:
237 For any given CML selector, the Request pipe is used to send serialized commands
250 All CML methods are thread safe. The CML implementation handles any necessary
266 makes calls to CML functions at a given time *for a given pipe*, this therefore
287 int do_write(QUIC_CML *cml,
305 if (!ossl_cml_write(cml, app_send_pipe, buf, buf_len, &bytes_written))
312 ossl_cml_block_until(cml, {notification_pipe, app_send_pipe});
326 * Creates a new CML using the Direct CML (DCML) implementation. need_locking
332 /* Creates a new CML using the Worker CML (WCML) implementation. */
336 * Starts the CML operating. Idempotent after it returns successfully. For the
340 int ossl_cml_start(QUIC_CML *cml);
343 * Begins the CML shutdown process. Returns 1 once shutdown is complete; may
346 int ossl_cml_shutdown(QUIC_CML *cml);
349 * Immediate free of the CML. This is always safe but may cause handling
353 void ossl_cml_free(QUIC_CML *cml);
356 * Retrieves a pipe for a logical CML object described by selector. The pipe
357 * handle, which is stable over the life of the logical CML object, is written
367 int ossl_cml_get_pipe(QUIC_CML *cml,
377 size_t ossl_cml_write_available(QUIC_CML *cml, QUIC_CML_PIPE pipe_handle);
383 int ossl_cml_write(QUIC_CML *cml, QUIC_CML_PIPE pipe_handle,
391 size_t ossl_cml_read_available(QUIC_CML *cml, QUIC_CML_PIPE pipe_handle);
396 int ossl_cml_read(QUIC_CML *cml, QUIC_CML_PIPE pipe_handle,
408 int ossl_cml_block_until(QUIC_CML *cml,