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 makes the
WgpsMessenger
class capable of private area intersection.Added a new
PaiFinder
class. When this class is given a read authorisation (e.g. a read capability or read capability + subspace capability), it is able to transform these into fragments and submit these for private set intersection. This class is also able to request and reply with subspace capabilities when the need arises.Added a new
HandleStore
class. This class is able to bind data to handles, and provides the necessary primitives to safely free those handles (using reference counting) when needed.Added a new
GuaranteedQueue
class. This can have bytes pushed onto it which are only emitted when the queue is given an amount of guarantees (in bytes) that the data can actually be accepted. It is also able to hear the pleas of foolish servers who guaranteed too many bytes, and always absolves them.Added streaming decoding for all control and intersection messages, powered by a new
GrowingBytes
class (in willow-utils).WgpsMessenger
has been updated to coordinate the new intersection channel, intersection handle store,PaiFinder
, initial read authorisations, and incoming messages.Last but not least, test schemes have been unified so that all tests share the same (interoperable) parameters.