1/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc.  See LICENSE. */
2/*
3 * lsquic_hcso_writer.h
4 */
5
6#ifndef LSQUIC_HCSO_WRITER_H
7#define LSQUIC_HCSO_WRITER_H 1
8
9struct lsquic_ext_http_prio;
10struct lsquic_stream;
11
12struct hcso_writer
13{
14    struct lsquic_stream    *how_stream;
15    struct frab_list         how_fral;
16#ifndef NDEBUG
17    enum {
18        HOW_RAND_VARINT = 1 << 0,
19        HOW_CHOP_STREAM = 1 << 1,
20    }                        how_flags;
21#endif
22};
23
24int
25lsquic_hcso_write_settings (struct hcso_writer *,
26                                        unsigned, unsigned, unsigned, int);
27
28int
29lsquic_hcso_write_goaway (struct hcso_writer *, lsquic_stream_id_t);
30
31int
32lsquic_hcso_write_max_push_id (struct hcso_writer *, uint64_t max_push_id);
33
34int
35lsquic_hcso_write_cancel_push (struct hcso_writer *, uint64_t push_id);
36
37int
38lsquic_hcso_write_priority_update (struct hcso_writer *,
39                enum hq_frame_type, uint64_t stream_or_push_id,
40                const struct lsquic_ext_http_prio *);
41
42extern const struct lsquic_stream_if *const lsquic_hcso_writer_if;
43
44#endif
45