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