Add a comment explaining what pending_open is for (#232)
It isn't immediately obvious why the connection supports buffering requests. The reason is that it models the futures' mpsc channel behavior. This patch adds a comment explaining this.
This commit is contained in:
		| @@ -29,6 +29,18 @@ pub(super) struct Prioritize { | ||||
|     pending_capacity: store::Queue<stream::NextSendCapacity>, | ||||
|  | ||||
|     /// Streams waiting for capacity due to max concurrency | ||||
|     /// | ||||
|     /// The `SendRequest` handle is `Clone`. This enables initiating requests | ||||
|     /// from many tasks. However, offering this capability while supporting | ||||
|     /// backpressure at some level is tricky. If there are many `SendRequest` | ||||
|     /// handles and a single stream becomes available, which handle gets | ||||
|     /// assigned that stream? Maybe that handle is no longer ready to send a | ||||
|     /// request. | ||||
|     /// | ||||
|     /// The strategy used is to allow each `SendRequest` handle one buffered | ||||
|     /// request. A `SendRequest` handle is ready to send a request if it has no | ||||
|     /// associated buffered requests. This is the same strategy as `mpsc` in the | ||||
|     /// futures library. | ||||
|     pending_open: store::Queue<stream::NextOpen>, | ||||
|  | ||||
|     /// Connection level flow control governing sent data | ||||
|   | ||||
		Reference in New Issue
	
	Block a user