1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
use Codec;
use address;
/// Fully-qualified actor address: a logical `name` paired with the `node`
/// that owns it.
///
/// Cross-node uniqueness is structural — two nodes physically cannot hold
/// the same `Address` because their `node` fields differ. Per-node uniqueness
/// (two registrations on the same node with the same name) is enforced by
/// `actor_system_loop`'s local check.
/// Outcome of a multi-node `send_broadcast`.
///
/// The two fields count different things — keep that in mind when you
/// inspect lengths:
///
/// - `local` — one entry **per matched local actor**. Each `Result` is the
/// outcome of the in-process mailbox send. `local.len()` is the exact
/// number of local actors that received the message.
///
/// - `remote` — one entry **per remote peer that we sent a `BroadcastFire`
/// envelope to**. `Ok(())` means the broker accepted the produce — the
/// receiver then runs its own regex match against its local actors and
/// dispatches to 0..N of them, but **fire-and-forget**, so no per-actor
/// confirmation comes back. `remote.len()` is the number of remote peer
/// nodes we shipped envelopes to, **not** the number of remote actors
/// that received the message.
///
/// In other words, the total number of actors that received the broadcast
/// is `local.len() + (unknown remote actor count)`. If you need an
/// accurate cluster-wide actor count, this fire-style broadcast can't give
/// it to you — that would require a request/response protocol where each
/// peer replies with its own match count.
/// Selects which set of nodes a broadcast should fan out to.
///
/// Passed to `send_broadcast` / `send_broadcast_without_tx_cache` (multi-node
/// only). The result shape is [`BroadcastResult`] — see its docs for what
/// `local.len()` vs. `remote.len()` actually mean.
///
/// Duplicates in `Peers` are deduped; self-node appearing in any variant
/// runs as a local fan-out (no broker round trip).