| 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 | |