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

Comparing AnyEvent-MP/MP/Transport.pm (file contents):
Revision 1.3 by root, Fri Jul 31 21:00:37 2009 UTC vs.
Revision 1.4 by root, Sat Aug 1 15:04:31 2009 UTC

113 peername => $peername, # for verification 113 peername => $peername, # for verification
114 ; 114 ;
115 115
116=cut 116=cut
117 117
118our @FRAMING_WANT = qw(json storable);#d##TODO#
119
118sub new { 120sub new {
119 my ($class, %arg) = @_; 121 my ($class, %arg) = @_;
120 122
121 my $self = bless \%arg, $class; 123 my $self = bless \%arg, $class;
122 124
134 unless exists $arg{secret}; 136 unless exists $arg{secret};
135 137
136 $self->{hdl} = new AnyEvent::Handle 138 $self->{hdl} = new AnyEvent::Handle
137 fh => delete $arg{fh}, 139 fh => delete $arg{fh},
138 rbuf_max => 64 * 1024, 140 rbuf_max => 64 * 1024,
141 autocork => 1,
142 no_delay => 1,
139 on_error => sub { 143 on_error => sub {
140 $self->error ($_[2]); 144 $self->error ($_[2]);
141 }, 145 },
142 peername => delete $arg{peername}, 146 peername => delete $arg{peername},
143 ; 147 ;
238} 242}
239 243
240sub error { 244sub error {
241 my ($self, $msg) = @_; 245 my ($self, $msg) = @_;
242 246
247 if ($self->{node} && $self->{node}{transport} == $self) {
248 $self->{node}->clr_transport;
249 }
243 $self->{on_error}($self, $msg); 250# $self->{on_error}($self, $msg);
244 $self->{hdl}->destroy; 251 $self->destroy;
245} 252}
246 253
247sub connected { 254sub connected {
248 my ($self) = @_; 255 my ($self) = @_;
249 256
250 (AnyEvent::MP::add_node ($self->{remote_node})) 257 my $node = AnyEvent::MP::add_node ($self->{remote_node});
258 Scalar::Util::weaken ($self->{node} = $node);
251 ->set_transport ($self); 259 $node->set_transport ($self);
252} 260}
253 261
254sub send { 262sub send {
255 $_[0]{hdl}->push_write ($_[0]{s_framing} => $_[1]); 263 $_[0]{hdl}->push_write ($_[0]{s_framing} => $_[1]);
256} 264}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines