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.20 by root, Thu Aug 13 00:23:36 2009 UTC vs.
Revision 1.22 by root, Thu Aug 13 22:50:47 2009 UTC

54 54
55# called only after successful handshake 55# called only after successful handshake
56sub transport_error { 56sub transport_error {
57 my ($self, @reason) = @_; 57 my ($self, @reason) = @_;
58 58
59 $self->{transport} 59 my $no_transport = !$self->{transport};
60 or return; 60
61 delete $self->{connect_w};
62 delete $self->{connect_to};
61 63
62 delete $self->{queue}; 64 delete $self->{queue};
63 $self->transport_reset; 65 $self->transport_reset;
64 66
65 AnyEvent::MP::Kernel::_inject_nodeevent ($self, 0, @reason); 67 AnyEvent::MP::Kernel::_inject_nodeevent ($self, 0, @reason)
68 unless $no_transport;
66 69
67 if (my $mon = delete $self->{lmon}) { 70 if (my $mon = delete $self->{lmon}) {
68 $_->(@reason) for map @$_, values %$mon; 71 $_->(@reason) for map @$_, values %$mon;
69 } 72 }
70} 73}
169 172
170package AnyEvent::MP::Node::Indirect; 173package AnyEvent::MP::Node::Indirect;
171 174
172use base "AnyEvent::MP::Node::Direct"; 175use base "AnyEvent::MP::Node::Direct";
173 176
177sub transport_reset {
178 my ($self) = @_;
179
180 # as an optimisation, immediately nuke slave nodes
181 delete $AnyEvent::MP::Kernel::NODE{$self->{noderef}}
182 if $self->{transport};
183
184 $self->SUPER::transport_reset;
185}
186
174sub connect { 187sub connect {
175 my ($self) = @_; 188 my ($self) = @_;
176 189
177 $self->transport_error (transport_error => $self->{noderef}, "unable to connect to indirect node"); 190 $self->transport_error (transport_error => $self->{noderef}, "unable to connect to indirect node");
178} 191}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines