1 mod buffer;
2 mod counts;
3 mod flow_control;
4 mod prioritize;
5 mod recv;
6 mod send;
7 mod state;
8 mod store;
9 mod stream;
10 #[allow(clippy::module_inception)]
11 mod streams;
12 
13 pub(crate) use self::prioritize::Prioritized;
14 pub(crate) use self::recv::Open;
15 pub(crate) use self::send::PollReset;
16 pub(crate) use self::streams::{DynStreams, OpaqueStreamRef, StreamRef, Streams};
17 
18 use self::buffer::Buffer;
19 use self::counts::Counts;
20 use self::flow_control::FlowControl;
21 use self::prioritize::Prioritize;
22 use self::recv::Recv;
23 use self::send::Send;
24 use self::state::State;
25 use self::store::Store;
26 use self::stream::Stream;
27 
28 use crate::frame::{StreamId, StreamIdOverflow};
29 use crate::proto::*;
30 
31 use bytes::Bytes;
32 use std::time::Duration;
33 
34 #[derive(Debug)]
35 pub struct Config {
36     /// Initial maximum number of locally initiated streams.
37     /// After receiving a Settings frame from the remote peer,
38     /// the connection will overwrite this value with the
39     /// MAX_CONCURRENT_STREAMS specified in the frame.
40     pub initial_max_send_streams: usize,
41 
42     /// Max amount of DATA bytes to buffer per stream.
43     pub local_max_buffer_size: usize,
44 
45     /// The stream ID to start the next local stream with
46     pub local_next_stream_id: StreamId,
47 
48     /// If the local peer is willing to receive push promises
49     pub local_push_enabled: bool,
50 
51     /// If extended connect protocol is enabled.
52     pub extended_connect_protocol_enabled: bool,
53 
54     /// How long a locally reset stream should ignore frames
55     pub local_reset_duration: Duration,
56 
57     /// Maximum number of locally reset streams to keep at a time
58     pub local_reset_max: usize,
59 
60     /// Maximum number of remotely reset "pending accept" streams to keep at a
61     /// time. Going over this number results in a connection error.
62     pub remote_reset_max: usize,
63 
64     /// Initial window size of remote initiated streams
65     pub remote_init_window_sz: WindowSize,
66 
67     /// Maximum number of remote initiated streams
68     pub remote_max_initiated: Option<usize>,
69 
70     /// Maximum number of locally reset streams due to protocol error across
71     /// the lifetime of the connection.
72     ///
73     /// When this gets exceeded, we issue GOAWAYs.
74     pub local_max_error_reset_streams: Option<usize>,
75 }
76