--- AnyEvent-MP/MP/Global.pm 2012/03/14 22:59:58 1.58 +++ AnyEvent-MP/MP/Global.pm 2012/03/21 15:22:16 1.59 @@ -53,7 +53,7 @@ our %LOCAL_DBS; # local databases of other global nodes our %LOCAL_DB; # this node database -our $SRCNODE; +our $SRCNODE; # the origin node id our %NODE_REQ; # only in global code @@ -144,38 +144,38 @@ my ($db) = @_ or return; # empty g_slave is used to start global service - my $node = $SRCNODE->{id}; + my $node = $SRCNODE; undef $GLOBAL_SLAVE{$node}; g_set $node, $db; }; $NODE_REQ{g_set} = sub { - g_set $SRCNODE->{id}, @_; + g_set $SRCNODE, @_; }; $NODE_REQ{g_upd} = sub { - g_upd $SRCNODE->{id}, @_; + g_upd $SRCNODE, @_; }; $NODE_REQ{g_find} = sub { my ($node) = @_; - snd $SRCNODE->{id}, g_found => $node, $GLOBAL_DB{"'l"}{$node}; + snd $SRCNODE, g_found => $node, $GLOBAL_DB{"'l"}{$node}; }; $NODE_REQ{g_db_family} = sub { my ($family, $id) = @_; - snd $SRCNODE->{id}, g_reply => $id, $GLOBAL_DB{$family} || {}; + snd $SRCNODE, g_reply => $id, $GLOBAL_DB{$family} || {}; }; $NODE_REQ{g_db_keys} = sub { my ($family, $id) = @_; - snd $SRCNODE->{id}, g_reply => $id, [keys %{ $GLOBAL_DB{$family} } ]; + snd $SRCNODE, g_reply => $id, [keys %{ $GLOBAL_DB{$family} } ]; }; $NODE_REQ{g_db_values} = sub { my ($family, $id) = @_; - snd $SRCNODE->{id}, g_reply => $id, [values %{ $GLOBAL_DB{$family} } ]; + snd $SRCNODE, g_reply => $id, [values %{ $GLOBAL_DB{$family} } ]; }; # monitoring @@ -198,18 +198,18 @@ # g_mon0 family - stop monitoring $NODE_REQ{g_mon0} = sub { - delete $GLOBAL_MON{$_[0]}{$SRCNODE->{id}}; + delete $GLOBAL_MON{$_[0]}{$SRCNODE}; delete $GLOBAL_MON{$_[0]} unless %{ $GLOBAL_MON{$_[0]} }; - delete $GLOBAL_SLAVE{$SRCNODE->{id}}{$_[0]}; + delete $GLOBAL_SLAVE{$SRCNODE}{$_[0]}; }; # g_mon1 family key - start monitoring $NODE_REQ{g_mon1} = sub { - undef $GLOBAL_SLAVE{$SRCNODE->{id}}{$_[0]}; - undef $GLOBAL_MON{$_[0]}{$SRCNODE->{id}}; + undef $GLOBAL_SLAVE{$SRCNODE}{$_[0]}; + undef $GLOBAL_MON{$_[0]}{$SRCNODE}; - snd $SRCNODE->{id}, g_chg1 => $_[0], $GLOBAL_DB{$_[0]}; + snd $SRCNODE, g_chg1 => $_[0], $GLOBAL_DB{$_[0]}; }; ############################################################################# @@ -280,9 +280,12 @@ } $NODE_REQ{g_global} = sub { - g_slave_disconnect $SRCNODE->{id}; - $SRCNODE->{transport}{remote_greeting}{global} = 1; - g_global_connect $SRCNODE->{id}; + g_slave_disconnect $SRCNODE; + + my $node = $NODE{$SRCNODE}; + $node->{transport}{remote_greeting}{global} = 1; + + g_global_connect $SRCNODE; }; # enable global mode