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.
Rationale:
AsyncDelegate
is used, there should be no need for higher level objects such asSwarm
,KademliaProtocol
, orGossip
to knowMessage.Identity
.Message
s viaAsyncDelegate
is under the context ofReceiveMessage()
. AlthoughMessage.Identity
is used as an earmark for dispatching replyMessage
s internally for anITransport
, this design is only due to howMessage
s are encoded which in turn is due to the design ofNetMQ
.PS - I think it might even be better for the delegate to be of the form
Func<BoundPeer, MessageContent, Channel<MessageContent>, Task>
instead ofFunc<Message, Channel<MessageContent>, Task>
if we can be sure if other layers shouldn't really care aboutMessage.Timestamp
orMessage.Version
. 🙄