Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
f405da9
implement scattering of stream payload
kazuho Jun 14, 2025
e143b67
pass max_datagrams, otherwise partial packet will be generated due to…
kazuho Jun 16, 2025
6e71d45
oops
kazuho Jun 16, 2025
129b991
simplify
kazuho Jun 16, 2025
d8e629b
use correct types
kazuho Jun 16, 2025
3fc826a
pass correct payload address to probes
kazuho Jun 16, 2025
423532e
commit stream state when failing to allocate packet space
kazuho Jun 16, 2025
f8ed948
Merge branch 'master' into kazuho/scatter-stream
kazuho Dec 4, 2025
d13bda4
fix infinite loop
kazuho Dec 4, 2025
5561cff
oops (amend prev. commit)
kazuho Dec 5, 2025
b0b90b3
use const to avoid dynamic allocation
kazuho Dec 22, 2025
1155134
respect send window
kazuho Dec 22, 2025
47ba9c3
make a better guess (include tag size)
kazuho Dec 22, 2025
d10b305
update test following the change in b0b90b3
kazuho Jan 13, 2026
fb50825
[refactor] split frame space allocation and context marking, so that …
kazuho Jan 13, 2026
5d959f0
support delayed loading
kazuho Jan 13, 2026
6c676ef
Merge branch 'master' into kazuho/scatter-stream
kazuho Jan 13, 2026
e7b5e6a
follow the changes in this branch
kazuho Jan 14, 2026
90ca81c
avoid overflow when payloads are moved back
kazuho Jan 14, 2026
0fde4a0
Merge branch 'master' into kazuho/scatter-stream
kazuho Jan 14, 2026
d97b585
add flag to enable / disable scattering emit
kazuho Jan 14, 2026
e01c437
Merge branch 'master' into kazuho/scatter-stream
kazuho Jan 20, 2026
5ba6f87
update expectations of the lossy tests
kazuho Jan 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions include/quicly.h
Original file line number Diff line number Diff line change
Expand Up @@ -946,8 +946,10 @@ typedef struct st_quicly_stream_callbacks_t {
* asks the application to fill the frame payload. `off` is the offset within the buffer (the beginning position of the buffer
* changes as `on_send_shift` is invoked). `len` is an in/out argument that specifies the size of the buffer / amount of data
* being written. `wrote_all` is a boolean out parameter indicating if the application has written all the available data.
* As this callback is triggered by calling quicly_stream_sync_sendbuf (stream, 1) when tx data is present, it assumes data
* to be available - that is `len` return value should be non-zero.
* This callback typically writes some data and therefore sets `*len` to a non-zero value, as the callback is triggered by
* calling quicly_stream_sync_sendbuf (stream, 1) when tx data is present. However, the callback may set `*len` to zero to
* indicate that payload was not immediately avaiable (e,g., when it has to be loaded from disk). It is the responsibility of
* the user-supplied stream scheduler to reschedule the stream once data is loaded.
*/
void (*on_send_emit)(quicly_stream_t *stream, size_t off, void *dst, size_t *len, int *wrote_all);
/**
Expand Down Expand Up @@ -996,6 +998,12 @@ struct st_quicly_stream_t {
*
*/
unsigned streams_blocked : 1;
/**
* if `on_send_emit` should be called to read payload of multiple datagrams. After the callback returns, quicly calls `memmove`
* to scatter the payload. Setting this flag is likely to improve throughput when the overhead is high for reading the payload
* (e.g., when `on_send_emit` calls `pread`).
*/
unsigned scatter_emit : 1;
/**
*
*/
Expand Down
1 change: 1 addition & 0 deletions include/quicly/constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ typedef int64_t quicly_error_t;
#define QUICLY_ERROR_STATE_EXHAUSTION 0xff07
#define QUICLY_ERROR_INVALID_INITIAL_VERSION 0xff08
#define QUICLY_ERROR_DECRYPTION_FAILED 0xff09
#define QUICLY_ERROR_SEND_EMIT_BLOCKED 0xff0a

typedef int64_t quicly_stream_id_t;

Expand Down
Loading