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.5 by root, Sun Aug 16 05:02:24 2009 UTC vs.
Revision 1.6 by root, Mon Aug 17 03:33:18 2009 UTC

55} 55}
56 56
57sub set_groups($$) { 57sub set_groups($$) {
58 my ($noderef, $lreg) = @_; 58 my ($noderef, $lreg) = @_;
59 59
60 use Data::Dumper; warn Dumper $lreg;#d# 60 while (my ($k, $v) = each %$lreg) {
61 push @{ $greg{$k} }, @$v;
62 }
61} 63}
62 64
63=item $guard = register $port, $group 65=item $guard = register $port, $group
64 66
65Register the given (local!) port in the named global group C<$group>. 67Register the given (local!) port in the named global group C<$group>.
74# register port from any node 76# register port from any node
75sub _register { 77sub _register {
76 my ($port, $group) = @_; 78 my ($port, $group) = @_;
77 79
78 push @{ $greg{$group} }, $port; 80 push @{ $greg{$group} }, $port;
81}
82
83# unregister port from any node
84sub _unregister {
85 my ($port, $group) = @_;
86
87 @{ $greg{$group} } = grep $_ ne $port, @{ $greg{$group} };
79} 88}
80 89
81# unregister local port 90# unregister local port
82sub unregister { 91sub unregister {
83 my ($port, $group) = @_; 92 my ($port, $group) = @_;
121 mon $port, sub { 130 mon $port, sub {
122 unreg_groups $noderef; 131 unreg_groups $noderef;
123 delete $port{$noderef}; 132 delete $port{$noderef};
124 }; 133 };
125 snd $port, connect_nodes => up_nodes; 134 snd $port, connect_nodes => up_nodes;
126 snd $port, set => \%greg; 135 snd $port, set => \%lreg;
127} 136}
128 137
129# other nodes connect via this 138# other nodes connect via this
130sub connect { 139sub connect {
131 my ($version, $noderef) = @_; 140 my ($version, $noderef) = @_;
139 connect_node $_; 148 connect_node $_;
140 start_node $_; 149 start_node $_;
141 } 150 }
142 }, 151 },
143 set => sub { 152 set => sub {
144 unreg_groups $noderef;
145 set_groups $noderef, shift; 153 set_groups $noderef, shift;
146 }, 154 },
147 reg1 => \&_register, 155 reg1 => \&_register,
148 reg0 => \&_unregister, 156 reg0 => \&_unregister,
149 ; 157 ;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines