ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent/Handle.pm
(Generate patch)

Comparing AnyEvent/lib/AnyEvent/Handle.pm (file contents):
Revision 1.34 by root, Mon May 26 03:27:52 2008 UTC vs.
Revision 1.35 by root, Mon May 26 05:46:35 2008 UTC

289 289
290sub _drain_wbuf { 290sub _drain_wbuf {
291 my ($self) = @_; 291 my ($self) = @_;
292 292
293 if (!$self->{ww} && length $self->{wbuf}) { 293 if (!$self->{ww} && length $self->{wbuf}) {
294
294 Scalar::Util::weaken $self; 295 Scalar::Util::weaken $self;
296
295 my $cb = sub { 297 my $cb = sub {
296 my $len = syswrite $self->{fh}, $self->{wbuf}; 298 my $len = syswrite $self->{fh}, $self->{wbuf};
297 299
298 if ($len >= 0) { 300 if ($len >= 0) {
299 substr $self->{wbuf}, 0, $len, ""; 301 substr $self->{wbuf}, 0, $len, "";
306 } elsif ($! != EAGAIN && $! != EINTR && $! != WSAWOULDBLOCK) { 308 } elsif ($! != EAGAIN && $! != EINTR && $! != WSAWOULDBLOCK) {
307 $self->error; 309 $self->error;
308 } 310 }
309 }; 311 };
310 312
313 # try to write data immediately
314 $cb->();
315
316 # if still data left in wbuf, we need to poll
311 $self->{ww} = AnyEvent->io (fh => $self->{fh}, poll => "w", cb => $cb); 317 $self->{ww} = AnyEvent->io (fh => $self->{fh}, poll => "w", cb => $cb)
312 318 if length $self->{wbuf};
313 $cb->($self);
314 }; 319 };
315} 320}
316 321
317our %WH; 322our %WH;
318 323

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines