Hi! Since my last update I added an internal buffer-like structure for Quic streams (it should support operations like read/write/consume) : https://github.com/dlang-community/quic-d/pull/9.
Petar recommended me to work in a way that avoids as much as possible unnecessary copies. One idea that related to this objective was to directly store the actual stream frames instead of the plain data. This way, you do not have to pull plain data out of a buffer only to copy it again to another StreamFrame buffer. I have added multiple methods that should make my buffer convenient to use in multiple scenarios that I may have to deal with. As I had to work on a form of acknowledging the data("consuming" it out of the buffer), I have read more about Quic acknowledging. Quic acknowledges packets in a somewhat similar way to TCP SACK(RFC2018) : in an Ack frame there are ranges of received packed numbers and gaps(of lost packets, if any).
Suggestions are welcome :). Thanks!