Dont double-count queued / sent / received data when channel restarted #140
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.
The data transfer module subscribes to hooks called by graphsync when a block is queued or sent.
When a data transfer is restarted, Graphsync calls these hooks again with all the blocks that have already been queued and sent, with a BlockSizeOnWire() of zero.
This PR modifies event handling such that
DataSent
andDataQueued
are only fired ifblock.BlockSizeOnWire()
is non-zeroDataQueuedProgress
,DataSentProgress
andDataReceivedProgress
are fired only the first time a block is queued / sent / receivedIn order to keep track of which blocks have been queued / sent / received, a new class has been added:
CIDSetManager
.Each channel has a cid set for queued / sent / received.