client: support custom pool keys #204
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces the ability to use a custom pool key with the legacy Client.
#16 added generic support to
Pool
itself long ago, but it was never fully finished to allow a custom key inClient
.To support backwards compatibility, a default PoolKey is assigned to the generic parameter which seems reasonably backwards compatible(?)
When providing a custom pool key, the user is required to also pass a constructor that generates the pool key from the
http::request::Parts
.I had also considered making a user pass in the PoolKey as part of theEdit: actually in my POC I realized this was not quite right. With this change, the user can pool based on anything... but then they cannot actually get utilize the extra info in the pool key during the Connector. I am still exploring some possibilities there.request()
call, but I think this is a worse experience generally and harder to be backwards compatible. If a user did want to do a per-request key they can always set an extension inParts
so this approach is equally flexible.