Lines Matching defs:acktr

60 int ngtcp2_acktr_init(ngtcp2_acktr *acktr, ngtcp2_log *log,
64 ngtcp2_objalloc_acktr_entry_init(&acktr->objalloc, 32, mem);
66 rv = ngtcp2_ringbuf_init(&acktr->acks, 32, sizeof(ngtcp2_acktr_ack_entry),
72 ngtcp2_ksl_init(&acktr->ents, greater, sizeof(int64_t), mem);
74 acktr->log = log;
75 acktr->mem = mem;
76 acktr->flags = NGTCP2_ACKTR_FLAG_NONE;
77 acktr->first_unacked_ts = UINT64_MAX;
78 acktr->rx_npkt = 0;
83 void ngtcp2_acktr_free(ngtcp2_acktr *acktr) {
88 if (acktr == NULL) {
93 for (it = ngtcp2_ksl_begin(&acktr->ents); !ngtcp2_ksl_it_end(&it);
95 ngtcp2_acktr_entry_objalloc_del(ngtcp2_ksl_it_get(&it), &acktr->objalloc);
99 ngtcp2_ksl_free(&acktr->ents);
101 ngtcp2_ringbuf_free(&acktr->acks);
103 ngtcp2_objalloc_free(&acktr->objalloc);
106 int ngtcp2_acktr_add(ngtcp2_acktr *acktr, int64_t pkt_num, int active_ack,
113 if (ngtcp2_ksl_len(&acktr->ents)) {
114 it = ngtcp2_ksl_lower_bound(&acktr->ents, &pkt_num);
132 ngtcp2_ksl_update_key(&acktr->ents, &ent->pkt_num, &pkt_num);
148 ngtcp2_ksl_remove_hint(&acktr->ents, NULL, &it, &ent->pkt_num);
149 ngtcp2_acktr_entry_objalloc_del(ent, &acktr->objalloc);
152 ngtcp2_ksl_update_key(&acktr->ents, &ent->pkt_num, &pkt_num);
167 rv = ngtcp2_acktr_entry_objalloc_new(&ent, pkt_num, ts, &acktr->objalloc);
171 rv = ngtcp2_ksl_insert(&acktr->ents, NULL, &ent->pkt_num, ent);
173 ngtcp2_acktr_entry_objalloc_del(ent, &acktr->objalloc);
179 acktr->flags |= NGTCP2_ACKTR_FLAG_ACTIVE_ACK;
180 if (acktr->first_unacked_ts == UINT64_MAX) {
181 acktr->first_unacked_ts = ts;
185 if (ngtcp2_ksl_len(&acktr->ents) > NGTCP2_ACKTR_MAX_ENT) {
186 it = ngtcp2_ksl_end(&acktr->ents);
189 ngtcp2_ksl_remove_hint(&acktr->ents, NULL, &it, &delent->pkt_num);
190 ngtcp2_acktr_entry_objalloc_del(delent, &acktr->objalloc);
196 void ngtcp2_acktr_forget(ngtcp2_acktr *acktr, ngtcp2_acktr_entry *ent) {
199 it = ngtcp2_ksl_lower_bound(&acktr->ents, &ent->pkt_num);
204 ngtcp2_ksl_remove_hint(&acktr->ents, &it, &it, &ent->pkt_num);
205 ngtcp2_acktr_entry_objalloc_del(ent, &acktr->objalloc);
209 ngtcp2_ksl_it ngtcp2_acktr_get(ngtcp2_acktr *acktr) {
210 return ngtcp2_ksl_begin(&acktr->ents);
213 int ngtcp2_acktr_empty(ngtcp2_acktr *acktr) {
214 ngtcp2_ksl_it it = ngtcp2_ksl_begin(&acktr->ents);
218 ngtcp2_acktr_ack_entry *ngtcp2_acktr_add_ack(ngtcp2_acktr *acktr,
221 ngtcp2_acktr_ack_entry *ent = ngtcp2_ringbuf_push_front(&acktr->acks);
230 * acktr_remove removes |ent| from |acktr|. |it| must point to the
234 static void acktr_remove(ngtcp2_acktr *acktr, ngtcp2_ksl_it *it,
236 ngtcp2_ksl_remove_hint(&acktr->ents, it, it, &ent->pkt_num);
237 ngtcp2_acktr_entry_objalloc_del(ent, &acktr->objalloc);
240 static void acktr_on_ack(ngtcp2_acktr *acktr, ngtcp2_ringbuf *rb,
251 it = ngtcp2_ksl_lower_bound(&acktr->ents, &ack_ent->largest_ack);
254 acktr_remove(acktr, &it, ent);
257 if (ngtcp2_ksl_len(&acktr->ents)) {
271 void ngtcp2_acktr_recv_ack(ngtcp2_acktr *acktr, const ngtcp2_ack *fr) {
275 ngtcp2_ringbuf *rb = &acktr->acks;
292 acktr_on_ack(acktr, rb, j);
312 acktr_on_ack(acktr, rb, j);
318 void ngtcp2_acktr_commit_ack(ngtcp2_acktr *acktr) {
319 acktr->flags &= (uint16_t) ~(NGTCP2_ACKTR_FLAG_ACTIVE_ACK |
322 acktr->first_unacked_ts = UINT64_MAX;
323 acktr->rx_npkt = 0;
326 int ngtcp2_acktr_require_active_ack(ngtcp2_acktr *acktr,
329 return acktr->first_unacked_ts != UINT64_MAX &&
330 acktr->first_unacked_ts + max_ack_delay <= ts;
333 void ngtcp2_acktr_immediate_ack(ngtcp2_acktr *acktr) {
334 acktr->flags |= NGTCP2_ACKTR_FLAG_IMMEDIATE_ACK;