lsquic_conn_public.h revision 50aadb33
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_stream;
17struct headers_stream;
18struct lsquic_send_ctl;
19
20struct lsquic_conn_public {
21    struct lsquic_streams_tailq     sending_streams,
22                                    rw_streams,
23                                    service_streams;
24    struct lsquic_cfcw              cfcw;
25    struct lsquic_conn_cap          conn_cap;
26    struct lsquic_rtt_stats         rtt_stats;
27    struct lsquic_engine_public    *enpub;
28    struct malo                    *packet_out_malo;
29    struct lsquic_conn             *lconn;
30    struct lsquic_mm               *mm;
31    struct headers_stream          *hs;
32    struct lsquic_send_ctl         *send_ctl;
33};
34
35#endif
36