… | |
… | |
208 | rcv $SELF, |
208 | rcv $SELF, |
209 | addr => sub { |
209 | addr => sub { |
210 | my $addresses = shift; |
210 | my $addresses = shift; |
211 | $AnyEvent::MP::Kernel::WARN->(9, "$node told us it's addresses (@$addresses)."); |
211 | $AnyEvent::MP::Kernel::WARN->(9, "$node told us it's addresses (@$addresses)."); |
212 | $addr{$node} = $addresses; |
212 | $addr{$node} = $addresses; |
|
|
213 | |
|
|
214 | # to help listener-less nodes, we broadcast new addresses to them unconditionally |
|
|
215 | #TODO: should be done by a node finding out about a listener-less one |
|
|
216 | if (@$addresses) { |
|
|
217 | for my $other (values %AnyEvent::MP::NODE) { |
|
|
218 | if ($other->{transport}) { |
|
|
219 | if ($addr{$other->{id}}) { |
|
|
220 | if (!{ $addr{$other} }) { |
|
|
221 | $AnyEvent::MP::Kernel::WARN->(9, "helping $other->{id} to find $node."); |
|
|
222 | snd $port{$other}, connect_nodes => { $node => $addresses }; |
|
|
223 | } |
|
|
224 | } |
|
|
225 | } |
|
|
226 | } |
|
|
227 | } |
213 | }, |
228 | }, |
214 | connect_nodes => sub { |
229 | connect_nodes => sub { |
215 | my ($kv) = @_; |
230 | my ($kv) = @_; |
216 | |
231 | |
217 | use JSON::XS;#d# |
232 | use JSON::XS;#d# |