MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / deliver

Method deliver

nodedb/src/control/pubsub.rs:72–90  ·  view source on GitHub ↗

Deliver message to exactly one member (round-robin). Remove dead members.

(&mut self, msg: &PubSubMessage)

Source from the content-addressed store, hash-verified

70
71 /// Deliver message to exactly one member (round-robin). Remove dead members.
72 fn deliver(&mut self, msg: &PubSubMessage) {
73 if self.members.is_empty() {
74 return;
75 }
76 let mut attempts = 0;
77 while attempts < self.members.len() {
78 let idx = self.next_index % self.members.len();
79 self.next_index = idx + 1;
80 if self.members[idx].1.try_send(msg.clone()).is_ok() {
81 return;
82 }
83 // Dead member — remove and try next.
84 self.members.remove(idx);
85 if self.next_index > 0 {
86 self.next_index -= 1;
87 }
88 attempts += 1;
89 }
90 }
91}
92
93/// A named topic with bounded message log and active subscribers.

Callers 1

publishMethod · 0.80

Calls 6

is_okMethod · 0.80
try_sendMethod · 0.80
is_emptyMethod · 0.45
lenMethod · 0.45
cloneMethod · 0.45
removeMethod · 0.45

Tested by

no test coverage detected