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.19 by root, Wed Aug 12 22:03:15 2009 UTC vs.
Revision 1.21 by root, Thu Aug 13 00:49:23 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 my $no_transport = !$self->{transport};
60
61 delete $self->{connect_w};
62 delete $self->{connect_to};
63
59 delete $self->{queue}; 64 delete $self->{queue};
60 $self->transport_reset; 65 $self->transport_reset;
66
67 AnyEvent::MP::Kernel::_inject_nodeevent ($self, 0, @reason)
68 unless $no_transport;
61 69
62 if (my $mon = delete $self->{lmon}) { 70 if (my $mon = delete $self->{lmon}) {
63 $_->(@reason) for map @$_, values %$mon; 71 $_->(@reason) for map @$_, values %$mon;
64 } 72 }
65} 73}
66 74
67# called after handshake was successful 75# called after handshake was successful
68sub transport_connect { 76sub transport_connect {
69 my ($self, $transport) = @_; 77 my ($self, $transport) = @_;
70 78
71 $self->transport_reset 79 $self->transport_error (transport_error => "switched connections")
72 if $self->{transport}; 80 if $self->{transport};
73 81
74 delete $self->{connect_w}; 82 delete $self->{connect_w};
75 delete $self->{connect_to}; 83 delete $self->{connect_to};
76 84
79 my $transport_send = $transport->can ("send"); 87 my $transport_send = $transport->can ("send");
80 88
81 $self->{send} = sub { 89 $self->{send} = sub {
82 $transport_send->($transport, $_[0]); 90 $transport_send->($transport, $_[0]);
83 }; 91 };
92
93 AnyEvent::MP::Kernel::_inject_nodeevent ($self, 1);
84 94
85 $transport->send ($_) 95 $transport->send ($_)
86 for @{ delete $self->{queue} || [] }; 96 for @{ delete $self->{queue} || [] };
87} 97}
88 98
172 182
173package AnyEvent::MP::Node::Self; 183package AnyEvent::MP::Node::Self;
174 184
175use base "AnyEvent::MP::Node"; 185use base "AnyEvent::MP::Node";
176 186
187sub connect {
188 # we are trivially connected
189}
190
177sub transport_reset { 191sub transport_reset {
178 my ($self) = @_; 192 my ($self) = @_;
179 193
180 Scalar::Util::weaken $self; 194 Scalar::Util::weaken $self;
181 195

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines