lsquic_conn_public.h revision c51ce338
1/* Copyright (c) 2017 LiteSpeed Technologies Inc.  See LICENSE. */
2/*
3 * lsquic_conn_public.h -- Connection's "public interface"
4 *
5 * This structure is used to bundle things in connection that stream
6 * needs access to into a single object.  This way, the space per
7 * stream object is one pointer instead of four or five.
8 */
9
10#ifndef LSQUIC_CONN_PUBLIC_H
11#define LSQUIC_CONN_PUBLIC_H 1
12
13struct lsquic_conn;
14struct lsquic_engine_public;
15struct lsquic_mm;
16struct lsquic_hash;
17struct headers_stream;
18struct lsquic_send_ctl;
19
20struct lsquic_conn_public {
21    struct lsquic_streams_tailq     sending_streams,    /* Send RST_STREAM, BLOCKED, and WUF frames */
22                                    read_streams,
23                                    write_streams,      /* Send STREAM frames */
24                                    service_streams;
25    struct lsquic_hash             *all_streams;
26    struct lsquic_cfcw              cfcw;
27    struct lsquic_conn_cap          conn_cap;
28    struct lsquic_rtt_stats         rtt_stats;
29    struct lsquic_engine_public    *enpub;
30    struct malo                    *packet_out_malo;
31    struct lsquic_conn             *lconn;
32    struct lsquic_mm               *mm;
33    struct headers_stream          *hs;
34    struct lsquic_send_ctl         *send_ctl;
35};
36
37#endif
38