Lines Matching refs:qrs
44 void ossl_quic_rstream_free(QUIC_RSTREAM *qrs) in ossl_quic_rstream_free() argument
48 if (qrs == NULL) in ossl_quic_rstream_free()
51 cleanse = qrs->fl.cleanse; in ossl_quic_rstream_free()
52 ossl_sframe_list_destroy(&qrs->fl); in ossl_quic_rstream_free()
53 ring_buf_destroy(&qrs->rbuf, cleanse); in ossl_quic_rstream_free()
54 OPENSSL_free(qrs); in ossl_quic_rstream_free()
57 int ossl_quic_rstream_queue_data(QUIC_RSTREAM *qrs, OSSL_QRX_PKT *pkt, in ossl_quic_rstream_queue_data() argument
73 return ossl_sframe_list_insert(&qrs->fl, &range, pkt, data, fin); in ossl_quic_rstream_queue_data()
76 static int read_internal(QUIC_RSTREAM *qrs, unsigned char *buf, size_t size, in read_internal() argument
86 while (ossl_sframe_list_peek(&qrs->fl, &iter, &range, &data, &fin_)) { in read_internal()
100 data = ring_buf_get_ptr(&qrs->rbuf, range.start, &max_len); in read_internal()
109 data = ring_buf_get_ptr(&qrs->rbuf, range.start + max_len, in read_internal()
125 ret = ossl_sframe_list_drop_frames(&qrs->fl, offset); in read_internal()
126 ring_buf_cpop_range(&qrs->rbuf, 0, offset - 1, qrs->fl.cleanse); in read_internal()
137 static OSSL_TIME get_rtt(QUIC_RSTREAM *qrs) in get_rtt() argument
141 if (qrs->statm != NULL) { in get_rtt()
144 ossl_statm_get_rtt_info(qrs->statm, &rtt_info); in get_rtt()
152 int ossl_quic_rstream_read(QUIC_RSTREAM *qrs, unsigned char *buf, size_t size, in ossl_quic_rstream_read() argument
155 OSSL_TIME rtt = get_rtt(qrs); in ossl_quic_rstream_read()
157 if (!read_internal(qrs, buf, size, readbytes, fin, 1)) in ossl_quic_rstream_read()
160 if (qrs->rxfc != NULL in ossl_quic_rstream_read()
161 && !ossl_quic_rxfc_on_retire(qrs->rxfc, *readbytes, rtt)) in ossl_quic_rstream_read()
167 int ossl_quic_rstream_peek(QUIC_RSTREAM *qrs, unsigned char *buf, size_t size, in ossl_quic_rstream_peek() argument
170 return read_internal(qrs, buf, size, readbytes, fin, 0); in ossl_quic_rstream_peek()
173 int ossl_quic_rstream_available(QUIC_RSTREAM *qrs, size_t *avail, int *fin) in ossl_quic_rstream_available() argument
180 while (ossl_sframe_list_peek(&qrs->fl, &iter, &range, &data, fin)) in ossl_quic_rstream_available()
191 int ossl_quic_rstream_get_record(QUIC_RSTREAM *qrs, in ossl_quic_rstream_get_record() argument
198 if (!ossl_sframe_list_lock_head(&qrs->fl, &qrs->head_range, &record_, fin)) { in ossl_quic_rstream_get_record()
206 if (qrs->head_range.end == qrs->head_range.start) { in ossl_quic_rstream_get_record()
209 if (!ossl_sframe_list_drop_frames(&qrs->fl, qrs->head_range.end)) in ossl_quic_rstream_get_record()
213 rec_len_ = (size_t)(qrs->head_range.end - qrs->head_range.start); in ossl_quic_rstream_get_record()
216 record_ = ring_buf_get_ptr(&qrs->rbuf, qrs->head_range.start, in ossl_quic_rstream_get_record()
222 qrs->head_range.end = qrs->head_range.start + max_len; in ossl_quic_rstream_get_record()
232 int ossl_quic_rstream_release_record(QUIC_RSTREAM *qrs, size_t read_len) in ossl_quic_rstream_release_record() argument
236 if (!ossl_sframe_list_is_head_locked(&qrs->fl)) in ossl_quic_rstream_release_record()
239 if (read_len > qrs->head_range.end - qrs->head_range.start) { in ossl_quic_rstream_release_record()
242 offset = qrs->head_range.end; in ossl_quic_rstream_release_record()
244 offset = qrs->head_range.start + read_len; in ossl_quic_rstream_release_record()
247 if (!ossl_sframe_list_drop_frames(&qrs->fl, offset)) in ossl_quic_rstream_release_record()
251 ring_buf_cpop_range(&qrs->rbuf, 0, offset - 1, qrs->fl.cleanse); in ossl_quic_rstream_release_record()
253 if (qrs->rxfc != NULL) { in ossl_quic_rstream_release_record()
254 OSSL_TIME rtt = get_rtt(qrs); in ossl_quic_rstream_release_record()
256 if (!ossl_quic_rxfc_on_retire(qrs->rxfc, offset, rtt)) in ossl_quic_rstream_release_record()
273 int ossl_quic_rstream_move_to_rbuf(QUIC_RSTREAM *qrs) in ossl_quic_rstream_move_to_rbuf() argument
275 if (ring_buf_avail(&qrs->rbuf) == 0) in ossl_quic_rstream_move_to_rbuf()
277 return ossl_sframe_list_move_data(&qrs->fl, in ossl_quic_rstream_move_to_rbuf()
278 write_at_ring_buf_cb, &qrs->rbuf); in ossl_quic_rstream_move_to_rbuf()
281 int ossl_quic_rstream_resize_rbuf(QUIC_RSTREAM *qrs, size_t rbuf_size) in ossl_quic_rstream_resize_rbuf() argument
283 if (ossl_sframe_list_is_head_locked(&qrs->fl)) in ossl_quic_rstream_resize_rbuf()
286 if (!ring_buf_resize(&qrs->rbuf, rbuf_size, qrs->fl.cleanse)) in ossl_quic_rstream_resize_rbuf()
292 void ossl_quic_rstream_set_cleanse(QUIC_RSTREAM *qrs, int cleanse) in ossl_quic_rstream_set_cleanse() argument
294 qrs->fl.cleanse = cleanse; in ossl_quic_rstream_set_cleanse()