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

Comparing AnyEvent-MP/MP/Node.pm (file contents):
Revision 1.9 by root, Tue Aug 4 23:16:57 2009 UTC vs.
Revision 1.13 by root, Wed Aug 5 22:40:51 2009 UTC

54} 54}
55 55
56sub monitor { 56sub monitor {
57 my ($self, $portid, $cb) = @_; 57 my ($self, $portid, $cb) = @_;
58 58
59 return $cb->("node failed conenction") 59 return $cb->(transport_error => "node unreachable")
60 if $self->{failed}; 60 if $self->{failed};
61 61
62 my $list = $self->{lmon}{$portid} ||= []; 62 my $list = $self->{lmon}{$portid} ||= [];
63 63
64 $self->send (["", mon1 => $portid]) 64 $self->send (["", mon1 => $portid])
90 if ( 90 if (
91 exists $self->{remote_uniq} 91 exists $self->{remote_uniq}
92 && $self->{remote_uniq} ne $transport->{remote_uniq} 92 && $self->{remote_uniq} ne $transport->{remote_uniq}
93 ) { 93 ) {
94 # uniq changed, different node 94 # uniq changed, different node
95 $self->fail ("node restart detected"); 95 $self->fail (transport_error => $self->{noderef}, "node was restarted");
96 } 96 }
97 97
98 delete $self->{trial}; 98 delete $self->{trial};
99 delete $self->{next_connect}; 99 delete $self->{next_connect};
100 delete $self->{failed}; 100 delete $self->{failed};
155 155
156 [$w, \$g] 156 [$w, \$g]
157 }; 157 };
158 } else { 158 } else {
159 delete $self->{retry}; 159 delete $self->{retry};
160 $self->fail (transport_error => $self->{noderef}, "unable to connect");
160 } 161 }
161 162
162 $self->{next_connect} = AE::timer $AnyEvent::MP::Base::CONNECT_INTERVAL, 0, sub { 163 $self->{next_connect} = AE::timer $AnyEvent::MP::Base::CONNECT_INTERVAL, 0, sub {
163 $self->connect; 164 $self->connect;
164 }; 165 };
165} 166}
166 167
168package AnyEvent::MP::Node::Slave;
169
170use base "AnyEvent::MP::Node::Direct";
171
172sub connect {
173 my ($self) = @_;
174
175 $self->fail (transport_error => $self->{noderef}, "unable to connect to slave node");
176}
177
167package AnyEvent::MP::Node::Self; 178package AnyEvent::MP::Node::Self;
168 179
169use base "AnyEvent::MP::Node"; 180use base "AnyEvent::MP::Node";
170 181
171sub set_transport { 182sub set_transport {
172 die "FATAL error, set_transport was called"; 183 Carp::confess "FATAL error, set_transport was called on local node";
173} 184}
174 185
175sub send { 186sub send {
176 local $AnyEvent::MP::Base::SRCNODE = $_[0]; 187 local $AnyEvent::MP::Base::SRCNODE = $_[0];
177 AnyEvent::MP::Base::_inject (@{ $_[1] }); 188 AnyEvent::MP::Base::_inject (@{ $_[1] });

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines