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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines