lsquic_conn_public.h revision 229fce07
1229fce07SDmitri Tikhonov/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc.  See LICENSE. */
250aadb33SDmitri Tikhonov/*
350aadb33SDmitri Tikhonov * lsquic_conn_public.h -- Connection's "public interface"
450aadb33SDmitri Tikhonov *
550aadb33SDmitri Tikhonov * This structure is used to bundle things in connection that stream
650aadb33SDmitri Tikhonov * needs access to into a single object.  This way, the space per
750aadb33SDmitri Tikhonov * stream object is one pointer instead of four or five.
850aadb33SDmitri Tikhonov */
950aadb33SDmitri Tikhonov
1050aadb33SDmitri Tikhonov#ifndef LSQUIC_CONN_PUBLIC_H
1150aadb33SDmitri Tikhonov#define LSQUIC_CONN_PUBLIC_H 1
1250aadb33SDmitri Tikhonov
1350aadb33SDmitri Tikhonovstruct lsquic_conn;
1450aadb33SDmitri Tikhonovstruct lsquic_engine_public;
1550aadb33SDmitri Tikhonovstruct lsquic_mm;
16c51ce338SDmitri Tikhonovstruct lsquic_hash;
1750aadb33SDmitri Tikhonovstruct headers_stream;
1850aadb33SDmitri Tikhonovstruct lsquic_send_ctl;
1950aadb33SDmitri Tikhonov
2050aadb33SDmitri Tikhonovstruct lsquic_conn_public {
21c51ce338SDmitri Tikhonov    struct lsquic_streams_tailq     sending_streams,    /* Send RST_STREAM, BLOCKED, and WUF frames */
22c51ce338SDmitri Tikhonov                                    read_streams,
23c51ce338SDmitri Tikhonov                                    write_streams,      /* Send STREAM frames */
2450aadb33SDmitri Tikhonov                                    service_streams;
25c51ce338SDmitri Tikhonov    struct lsquic_hash             *all_streams;
2650aadb33SDmitri Tikhonov    struct lsquic_cfcw              cfcw;
2750aadb33SDmitri Tikhonov    struct lsquic_conn_cap          conn_cap;
2850aadb33SDmitri Tikhonov    struct lsquic_rtt_stats         rtt_stats;
2950aadb33SDmitri Tikhonov    struct lsquic_engine_public    *enpub;
3050aadb33SDmitri Tikhonov    struct malo                    *packet_out_malo;
3150aadb33SDmitri Tikhonov    struct lsquic_conn             *lconn;
3250aadb33SDmitri Tikhonov    struct lsquic_mm               *mm;
3350aadb33SDmitri Tikhonov    struct headers_stream          *hs;
3450aadb33SDmitri Tikhonov    struct lsquic_send_ctl         *send_ctl;
3550aadb33SDmitri Tikhonov};
3650aadb33SDmitri Tikhonov
3750aadb33SDmitri Tikhonov#endif
38