lsquic_hcso_writer.h revision fbc6cc04
1/* Copyright (c) 2017 - 2020 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_engine_settings;
10struct lsquic_ext_http_prio;
11struct lsquic_stream;
12
13struct hcso_writer
14{
15    struct lsquic_stream    *how_stream;
16    struct frab_list         how_fral;
17#ifndef NDEBUG
18    enum {
19        HOW_RAND_VARINT = 1 << 0,
20        HOW_CHOP_STREAM = 1 << 1,
21    }                        how_flags;
22#endif
23};
24
25int
26lsquic_hcso_write_settings (struct hcso_writer *,
27                        const struct lsquic_engine_settings *, int);
28
29int
30lsquic_hcso_write_goaway (struct hcso_writer *, lsquic_stream_id_t);
31
32int
33lsquic_hcso_write_max_push_id (struct hcso_writer *, uint64_t max_push_id);
34
35int
36lsquic_hcso_write_cancel_push (struct hcso_writer *, uint64_t push_id);
37
38int
39lsquic_hcso_write_priority_update (struct hcso_writer *,
40                enum hq_frame_type, uint64_t stream_or_push_id,
41                const struct lsquic_ext_http_prio *);
42
43extern const struct lsquic_stream_if *const lsquic_hcso_writer_if;
44
45#endif
46