radicle: introduce announcer
Similar to the Fetcher sans-IO approach, an Announcer sans-IO approach is
introduced. The previous Handler::announce was already quite close to using a
sans-IO approach, but using internally held state. This change makes the
business logic more reusable – and testable.
Similarly to the Fetcher, the Announcer is configured and then driven by
telling it when nodes have been synchronized with. It will continuously check if
it has reached its target, yielding to the caller to decide whether to keep
going. In contrast, it also provides a way to mark the process as timed out,
since announcing relies on waiting for events to come back in a timely manner.
25 files changed
+767
-262
cc96b9ed
→
5b4cbc2c
modified radicle-cli/examples/git/git-push-amend.md
@@ -22,7 +22,7 @@ $ git commit --amend -m "Neue Änderungen" --allow-empty -q
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/git/git-push-converge.md
@@ -94,7 +94,7 @@ $ git push rad -f
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -118,7 +118,7 @@ become the canonical `master`.
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -139,7 +139,7 @@ HEAD is now at 0f9bd80 Merge remote-tracking branch 'eve/master'
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/git/git-push-rollback.md
@@ -36,7 +36,7 @@ Fast-forward
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -55,7 +55,7 @@ push and the new canonical head becomes the previous commit again:
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/git/git-push.md
@@ -59,7 +59,7 @@ f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354 refs/heads/master
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/git/git-tag.md
@@ -12,7 +12,7 @@ $ git tag v1.0 -a -m "Release v1.0"
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -64,7 +64,7 @@ Updated tag 'v1.0' (was be18ed6)
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-id-threshold-soft-fork.md
@@ -13,7 +13,7 @@ $ rad issue open --title "Add Bob as a delegate" --description "We agreed to add
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-id-threshold.md
@@ -71,7 +71,7 @@ To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkE
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-inbox.md
@@ -7,7 +7,7 @@ Your inbox is empty.
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -113,7 +113,7 @@ Now let's do an identity update.
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-init-private-clone.md
@@ -14,14 +14,14 @@ Fetching rad:z2ug5mwNKZB8KGpBDRTrWHAMbvHCu from the network, found 1 potential s
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-patch-checkout-force.md
@@ -14,7 +14,7 @@ $ git commit -v -m "Define power requirements"
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -51,7 +51,7 @@ To compare against your previous revision aa45913, run:
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-patch-delete.md
@@ -11,7 +11,7 @@ $ git commit -m "Introduce license"
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -28,7 +28,7 @@ $ rad patch comment 6c61ef1 -m "I think we should use MIT"
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -55,7 +55,7 @@ $ rad patch comment 6c61ef1 --reply-to 833db19 -m "Thanks, I'll add it!"
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -75,7 +75,7 @@ To compare against your previous revision 6c61ef1, run:
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -83,7 +83,7 @@ To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkE
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -105,7 +105,7 @@ $ rad patch show 6c61ef1 -v
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -133,7 +133,7 @@ Alice should no longer have the patch:
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-patch-open-explore.md
@@ -5,7 +5,7 @@ $ git checkout -b changes -q
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -23,7 +23,7 @@ To compare against your previous revision acab0ec, run:
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -39,7 +39,7 @@ $ git merge changes -q
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-patch-pull-update.md
@@ -43,7 +43,7 @@ our fork:
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -55,7 +55,7 @@ $ git checkout -b bob/feature -q
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -88,7 +88,7 @@ To compare against your previous revision 55b9721, run:
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-push-and-pull-patches.md
@@ -38,7 +38,7 @@ To compare against your previous revision d004b67, run:
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -61,7 +61,7 @@ To compare against your previous revision d004b67, run:
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-sync.md
@@ -26,7 +26,7 @@ wait for nodes to announce that they have fetched those refs.
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -48,7 +48,7 @@ be up to date.
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -69,7 +69,7 @@ Fetching rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from the network, found 2 potential s
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -93,7 +93,7 @@ $ rad sync --replicas 1
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/workflow/4-patching-contributor.md
@@ -91,5 +91,5 @@ And let's leave a quick comment for our team:
|
|
|
|
|
|
| - | |
| + | |
|
modified radicle-cli/examples/workflow/5-patching-maintainer.md
@@ -77,7 +77,7 @@ Great, all fixed up, lets accept and merge the code.
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -93,7 +93,7 @@ Fast-forward
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -135,5 +135,5 @@ patch, marking it as solved:
|
|
|
|
|
|
| - | |
| + | |
|
modified radicle-cli/src/commands/sync.rs
@@ -1,4 +1,5 @@
|
|
| + | |
|
|
|
|
|
@@ -289,7 +290,7 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -315,15 +316,15 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
@@ -417,9 +418,9 @@ fn sync_status(
|
|
|
|
|
|
| - | |
|
|
|
|
| + | |
|
|
|
|
|
@@ -437,16 +438,19 @@ fn announce_refs(
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
|
|
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -483,7 +487,7 @@ pub fn fetch(
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -816,3 +820,87 @@ fn display_success<'a>(
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
modified radicle-cli/src/node.rs
@@ -2,13 +2,11 @@ use core::time;
|
|
|
|
|
|
| - | |
|
|
| - | |
| + | |
|
|
|
|
|
|
| - | |
|
|
|
|
|
@@ -82,6 +80,8 @@ pub enum SyncError {
|
|
|
|
|
|
| + | |
| + | |
|
|
|
|
|
@@ -159,137 +159,107 @@ pub fn announce<R: ReadRepository>(
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
|
|
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
| - | |
| + | |
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
|
|
|
|
| - | |
| - | |
| - | |
| - | |
|
modified radicle-cli/tests/commands.rs
@@ -553,8 +553,8 @@ fn rad_id_threshold() {
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
modified radicle-remote-helper/src/push.rs
@@ -878,18 +878,20 @@ fn sync(
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
| - | |
|
|
|
|
|
modified radicle/src/node.rs
@@ -817,37 +817,6 @@ impl From<Vec<Seed>> for Seeds {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
|
|
|
|
|
@@ -1161,25 +1130,24 @@ impl Node {
|
|
|
|
|
|
| - | |
|
|
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
| - | |
| - | |
| - | |
|
|
|
|
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
| - | |
| - | |
| + | |
|
|
|
|
|
@@ -1188,37 +1156,29 @@ impl Node {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| - | |
| - | |
| + | |
|
|
|
|
|
|
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
|
|
|
|
|
modified radicle/src/node/sync.rs
@@ -1,7 +1,55 @@
| - | |
| + | |
| + | |
|
|
| + | |
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
added radicle/src/node/sync/announce.rs
@@ -0,0 +1,464 @@
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
modified radicle/src/node/sync/fetch.rs
@@ -5,11 +5,9 @@
|
|
|
|
|
|
| - | |
|
|
| - | |
|
|
| - | |
| + | |
|
|
|
|
|
@@ -236,31 +234,6 @@ impl Fetcher {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
|
|
|
|
|