refactor: move stream upgrades to libp2p-swarm
#4789
Closed
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.
Description
In #4307, we introduced dedicated traits for connection upgrades. This was to separate the concept of stream and connection upgrades. The next logic step is to move all existing stream upgrades to
libp2p-swarm
. Utilities likeReadyUpgrade
orDeniedUpgrade
are only ever used byConnectionHandler
implementations. Thus, there is no need for them to reside inlibp2p-core
.On the surface, this looks like a really big change but this is only because these types are used in a lot of places. Moving them to
libp2p-swarm
allows us to remove theUpgradeInfoSend
,InboundUpgradeSend
andOutboundUpgradeSend
types because we simply apply theSend
bounds directly to the traits themselves.Within
libp2p-swarm
, we also know that these traits are only ever called with aStream
as a socket which allows us to remove theC
type parameter from them.At the same time, we can remove the
P
type parameter from types likeReadyUpgrade
by always specifying it as aStreamProtocol
.Related: #2863.
Resolves: #4697.
Notes & open questions
Change checklist