ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/MP/Global.pm
(Generate patch)

Comparing AnyEvent-MP/MP/Global.pm (file contents):
Revision 1.15 by root, Fri Aug 28 23:06:33 2009 UTC vs.
Revision 1.16 by root, Sun Aug 30 13:22:46 2009 UTC

197 unreg_groups $node; 197 unreg_groups $node;
198 delete $port{$node}; 198 delete $port{$node};
199 }; 199 };
200 200
201 snd $port, addr => $AnyEvent::MP::Kernel::LISTENER; 201 snd $port, addr => $AnyEvent::MP::Kernel::LISTENER;
202 snd $port, connect_nodes => \%addr if %addr; 202 snd $port, connect => \%addr if %addr;
203 snd $port, set => \%lreg if %lreg; 203 snd $port, set => \%lreg if %lreg;
204} 204}
205 205
206# other nodes connect via this 206# other nodes connect via this
207sub connect { 207sub connect {
221 if (@$addresses) { 221 if (@$addresses) {
222 for my $other (values %AnyEvent::MP::NODE) { 222 for my $other (values %AnyEvent::MP::NODE) {
223 if ($other->{transport}) { 223 if ($other->{transport}) {
224 if ($addr{$other->{id}} && !@{ $addr{$other->{id}} }) { 224 if ($addr{$other->{id}} && !@{ $addr{$other->{id}} }) {
225 $AnyEvent::MP::Kernel::WARN->(9, "helping $other->{id} to find $node."); 225 $AnyEvent::MP::Kernel::WARN->(9, "helping $other->{id} to find $node.");
226 snd $port{$other->{id}}, connect_nodes => { $node => $addresses }; 226 snd $port{$other->{id}}, connect => { $node => $addresses };
227 } 227 }
228 } 228 }
229 } 229 }
230 } 230 }
231 }, 231 },
232 connect_nodes => sub { 232 connect => sub {
233 my ($kv) = @_; 233 my ($kv) = @_;
234 234
235 use JSON::XS;#d# 235 use JSON::XS;#d#
236 my $kv_txt = JSON::XS->new->encode ($kv);#d# 236 my $kv_txt = JSON::XS->new->encode ($kv);#d#
237 $AnyEvent::MP::Kernel::WARN->(9, "$node told us it knows about $kv_txt.");#d# 237 $AnyEvent::MP::Kernel::WARN->(9, "$node told us it knows about $kv_txt.");#d#
240 my $node = AnyEvent::MP::Kernel::add_node $id; 240 my $node = AnyEvent::MP::Kernel::add_node $id;
241 $node->connect (@$addresses); 241 $node->connect (@$addresses);
242 start_node $id; 242 start_node $id;
243 } 243 }
244 }, 244 },
245 find_node => sub { 245 find => sub {
246 my ($othernode) = @_; 246 my ($othernode) = @_;
247 247
248 $AnyEvent::MP::Kernel::WARN->(9, "$node asked us to find $othernode."); 248 $AnyEvent::MP::Kernel::WARN->(9, "$node asked us to find $othernode.");
249 snd $port{$node}, connect_nodes => { $othernode => $addr{$othernode} } 249 snd $port{$node}, connect => { $othernode => $addr{$othernode} }
250 if $addr{$othernode}; 250 if $addr{$othernode};
251 }, 251 },
252 set => sub { 252 set => sub {
253 set_groups $node, shift; 253 set_groups $node, shift;
254 }, 254 },
269 unreg_groups $node; 269 unreg_groups $node;
270 270
271 # forget about the node 271 # forget about the node
272 delete $addr{$node}; 272 delete $addr{$node};
273 # ask other nodes if they know the node 273 # ask other nodes if they know the node
274 snd $_, find_node => $node 274 snd $_, find => $node
275 for values %port; 275 for values %port;
276 } 276 }
277 #warn "node<$node,$is_up>\n";#d# 277 #warn "node<$node,$is_up>\n";#d#
278} 278}
279 279

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines