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.174 by root, Sat Aug 8 20:52:06 2009 UTC vs.
Revision 1.175 by root, Sat Aug 8 22:20:43 2009 UTC

474sub _start { 474sub _start {
475 my ($self) = @_; 475 my ($self) = @_;
476 476
477 AnyEvent::Util::fh_nonblocking $self->{fh}, 1; 477 AnyEvent::Util::fh_nonblocking $self->{fh}, 1;
478 478
479 $self->{_activity} = AnyEvent->now; 479 $self->{_activity} = AE::now;
480 $self->_timeout; 480 $self->_timeout;
481 481
482 $self->no_delay (delete $self->{no_delay}) if exists $self->{no_delay}; 482 $self->no_delay (delete $self->{no_delay}) if exists $self->{no_delay};
483 483
484 $self->starttls (delete $self->{tls}, delete $self->{tls_ctx}) 484 $self->starttls (delete $self->{tls}, delete $self->{tls_ctx})
634# also check for time-outs 634# also check for time-outs
635sub _timeout { 635sub _timeout {
636 my ($self) = @_; 636 my ($self) = @_;
637 637
638 if ($self->{timeout} && $self->{fh}) { 638 if ($self->{timeout} && $self->{fh}) {
639 my $NOW = AnyEvent->now; 639 my $NOW = AE::now;
640 640
641 # when would the timeout trigger? 641 # when would the timeout trigger?
642 my $after = $self->{_activity} + $self->{timeout} - $NOW; 642 my $after = $self->{_activity} + $self->{timeout} - $NOW;
643 643
644 # now or in the past already? 644 # now or in the past already?
659 } 659 }
660 660
661 Scalar::Util::weaken $self; 661 Scalar::Util::weaken $self;
662 return unless $self; # ->error could have destroyed $self 662 return unless $self; # ->error could have destroyed $self
663 663
664 $self->{_tw} ||= AnyEvent->timer (after => $after, cb => sub { 664 $self->{_tw} ||= AE::timer $after, 0, sub {
665 delete $self->{_tw}; 665 delete $self->{_tw};
666 $self->_timeout; 666 $self->_timeout;
667 }); 667 };
668 } else { 668 } else {
669 delete $self->{_tw}; 669 delete $self->{_tw};
670 } 670 }
671} 671}
672 672
722 my $len = syswrite $self->{fh}, $self->{wbuf}; 722 my $len = syswrite $self->{fh}, $self->{wbuf};
723 723
724 if (defined $len) { 724 if (defined $len) {
725 substr $self->{wbuf}, 0, $len, ""; 725 substr $self->{wbuf}, 0, $len, "";
726 726
727 $self->{_activity} = AnyEvent->now; 727 $self->{_activity} = AE::now;
728 728
729 $self->{on_drain}($self) 729 $self->{on_drain}($self)
730 if $self->{low_water_mark} >= (length $self->{wbuf}) + (length $self->{_tls_wbuf}) 730 if $self->{low_water_mark} >= (length $self->{wbuf}) + (length $self->{_tls_wbuf})
731 && $self->{on_drain}; 731 && $self->{on_drain};
732 732
738 738
739 # try to write data immediately 739 # try to write data immediately
740 $cb->() unless $self->{autocork}; 740 $cb->() unless $self->{autocork};
741 741
742 # if still data left in wbuf, we need to poll 742 # if still data left in wbuf, we need to poll
743 $self->{_ww} = AnyEvent->io (fh => $self->{fh}, poll => "w", cb => $cb) 743 $self->{_ww} = AE::io $self->{fh}, 1, $cb
744 if length $self->{wbuf}; 744 if length $self->{wbuf};
745 }; 745 };
746} 746}
747 747
748our %WH; 748our %WH;
1540 my ($self) = @_; 1540 my ($self) = @_;
1541 1541
1542 unless ($self->{_rw} || $self->{_eof}) { 1542 unless ($self->{_rw} || $self->{_eof}) {
1543 Scalar::Util::weaken $self; 1543 Scalar::Util::weaken $self;
1544 1544
1545 $self->{_rw} = AnyEvent->io (fh => $self->{fh}, poll => "r", cb => sub { 1545 $self->{_rw} = AE::io $self->{fh}, 0, sub {
1546 my $rbuf = \($self->{tls} ? my $buf : $self->{rbuf}); 1546 my $rbuf = \($self->{tls} ? my $buf : $self->{rbuf});
1547 my $len = sysread $self->{fh}, $$rbuf, $self->{read_size} || 8192, length $$rbuf; 1547 my $len = sysread $self->{fh}, $$rbuf, $self->{read_size} || 8192, length $$rbuf;
1548 1548
1549 if ($len > 0) { 1549 if ($len > 0) {
1550 $self->{_activity} = AnyEvent->now; 1550 $self->{_activity} = AE::now;
1551 1551
1552 if ($self->{tls}) { 1552 if ($self->{tls}) {
1553 Net::SSLeay::BIO_write ($self->{_rbio}, $$rbuf); 1553 Net::SSLeay::BIO_write ($self->{_rbio}, $$rbuf);
1554 1554
1555 &_dotls ($self); 1555 &_dotls ($self);
1563 $self->_drain_rbuf; 1563 $self->_drain_rbuf;
1564 1564
1565 } elsif ($! != EAGAIN && $! != EINTR && $! != WSAEWOULDBLOCK) { 1565 } elsif ($! != EAGAIN && $! != EINTR && $! != WSAEWOULDBLOCK) {
1566 return $self->_error ($!, 1); 1566 return $self->_error ($!, 1);
1567 } 1567 }
1568 }); 1568 };
1569 } 1569 }
1570} 1570}
1571 1571
1572our $ERROR_SYSCALL; 1572our $ERROR_SYSCALL;
1573our $ERROR_WANT_READ; 1573our $ERROR_WANT_READ;
1791 my $fh = delete $self->{fh}; 1791 my $fh = delete $self->{fh};
1792 my $wbuf = delete $self->{wbuf}; 1792 my $wbuf = delete $self->{wbuf};
1793 1793
1794 my @linger; 1794 my @linger;
1795 1795
1796 push @linger, AnyEvent->io (fh => $fh, poll => "w", cb => sub { 1796 push @linger, AE::io $fh, 1, sub {
1797 my $len = syswrite $fh, $wbuf, length $wbuf; 1797 my $len = syswrite $fh, $wbuf, length $wbuf;
1798 1798
1799 if ($len > 0) { 1799 if ($len > 0) {
1800 substr $wbuf, 0, $len, ""; 1800 substr $wbuf, 0, $len, "";
1801 } else { 1801 } else {
1802 @linger = (); # end 1802 @linger = (); # end
1803 } 1803 }
1804 }); 1804 };
1805 push @linger, AnyEvent->timer (after => $linger, cb => sub { 1805 push @linger, AE::timer $linger, 0, sub {
1806 @linger = (); 1806 @linger = ();
1807 }); 1807 };
1808 } 1808 }
1809} 1809}
1810 1810
1811=item $handle->destroy 1811=item $handle->destroy
1812 1812

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines