Packages
hackney
3.0.3
4.7.2
4.7.1
4.7.0
4.6.1
4.6.0
4.5.2
4.5.1
4.5.0
4.4.5
4.4.3
4.4.2
4.4.1
4.4.0
4.3.0
4.2.3
4.2.2
4.2.1
4.2.0
4.1.0
4.0.3
4.0.2
4.0.1
4.0.0
3.2.1
3.2.0
3.1.2
3.1.1
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
retired
2.0.1
2.0.0
2.0.0-beta.1
1.25.0
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.1
1.20.0
1.19.1
1.19.0
1.18.2
1.18.1
1.18.0
1.17.4
1.17.3
1.17.2
1.17.1
1.17.0
1.16.0
1.15.2
1.15.1
1.15.0
1.14.3
1.14.2
1.14.0
1.13.0
1.12.1
1.12.0
1.11.0
1.10.1
1.10.0
1.9.0
1.8.6
1.8.5
1.8.4
1.8.3
1.8.2
1.8.0
1.7.1
1.7.0
1.6.6
retired
1.6.5
1.6.4
retired
1.6.3
1.6.2
1.6.1
1.6.0
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.10
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.6
1.0.5
1.0.2
1.0.1
0.15.2
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
Simple HTTP client with HTTP/1.1, HTTP/2, and HTTP/3 support
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
c_src/lsquic/src/liblsquic/lsquic_cong_ctl.h
/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */
/*
* lsquic_cong_ctl.h -- congestion control interface
*/
#ifndef LSQUIC_CONG_CTL_H
#define LSQUIC_CONG_CTL_H
struct lsquic_conn_public;
struct lsquic_packet_out;
enum quic_ft_bit;
/* All the methods don't quite match up between Cubic and BBR. Thus, some of
* the methods are optional; they are marked as such in the comments below.
* Reconciling Cubic and BBR to have similar interface is left as an exercise
* for the future.
*/
struct cong_ctl_if
{
void
(*cci_init) (void *cong_ctl, const struct lsquic_conn_public *,
enum quic_ft_bit);
void
(*cci_reinit) (void *cong_ctl);
void
(*cci_ack) (void *cong_ctl, struct lsquic_packet_out *, unsigned packet_sz,
lsquic_time_t now, int app_limited);
void
(*cci_loss) (void *cong_ctl);
/* Optional method */
void
(*cci_begin_ack) (void *cong_ctl, lsquic_time_t ack_time,
uint64_t in_flight);
/* Optional method */
void
(*cci_end_ack) (void *cong_ctl, uint64_t in_flight);
/* Optional method */
void
(*cci_sent) (void *cong_ctl, struct lsquic_packet_out *,
uint64_t in_flight, int app_limited);
/* Optional method */
void
(*cci_lost) (void *cong_ctl, struct lsquic_packet_out *,
unsigned packet_sz);
void
(*cci_timeout) (void *cong_ctl);
void
(*cci_was_quiet) (void *cong_ctl, lsquic_time_t now, uint64_t in_flight);
uint64_t
(*cci_get_cwnd) (void *cong_ctl);
uint64_t
(*cci_pacing_rate) (void *cong_ctl, int in_recovery);
void
(*cci_cleanup) (void *cong_ctl);
};
#endif