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.
In order to implement weaveworks/weave#2187 we need a way to expose and restore 'indirect peers' - targets that have been added via peer discovery instead of
InitiateConnections
.weaveworks/weave#2317 implements the changes in the router that depend on this modification.
This is pretty grotty, and really only meant as a strawman with the hope someone else can think of a cleaner way. Some possibilities:
InitiateConnections
andTargets
so that they take/return a slice of a new struct which has a type field (e.g. direct or indirect) instead of stringinterface{}
blob that can be saved and restored by an external agent (this might complicate matters if the router ever has to do a schema upgrade of the datastore)ConnectionMaker
with some kind of interface that it uses at appropriate points to a) get a set of direct/indirect peers (e.g. innewConnectionMaker
) and b) notify when they have changed (e.g. onInitiateConnections
/ForgetConnections
or when new targets are added through discovery)Thoughts?