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.77 by root, Sun Jul 27 07:25:39 2008 UTC vs.
Revision 1.80 by root, Sun Jul 27 08:43:32 2008 UTC

1package AnyEvent::Handle; 1package AnyEvent::Handle;
2 2
3no warnings; 3no warnings;
4use strict; 4use strict qw(subs vars);
5 5
6use AnyEvent (); 6use AnyEvent ();
7use AnyEvent::Util qw(WSAEWOULDBLOCK); 7use AnyEvent::Util qw(WSAEWOULDBLOCK);
8use Scalar::Util (); 8use Scalar::Util ();
9use Carp (); 9use Carp ();
79 79
80Set the callback to be called when an end-of-file condition is detected, 80Set the callback to be called when an end-of-file condition is detected,
81i.e. in the case of a socket, when the other side has closed the 81i.e. in the case of a socket, when the other side has closed the
82connection cleanly. 82connection cleanly.
83 83
84While not mandatory, it is highly recommended to set an eof callback, 84While not mandatory, it is I<highly> recommended to set an eof callback,
85otherwise you might end up with a closed socket while you are still 85otherwise you might end up with a closed socket while you are still
86waiting for data. 86waiting for data.
87
88If an EOF condition has been detected but no C<on_eof> callback has been
89set, then a fatal error will be raised with C<$!> set to <0>.
87 90
88=item on_error => $cb->($handle, $fatal) 91=item on_error => $cb->($handle, $fatal)
89 92
90This is the error callback, which is called when, well, some error 93This is the error callback, which is called when, well, some error
91occured, such as not being able to resolve the hostname, failure to 94occured, such as not being able to resolve the hostname, failure to
730 ) { 733 ) {
731 return $self->_error (&Errno::ENOSPC, 1); 734 return $self->_error (&Errno::ENOSPC, 1);
732 } 735 }
733 736
734 while () { 737 while () {
735 no strict 'refs';
736
737 my $len = length $self->{rbuf}; 738 my $len = length $self->{rbuf};
738 739
739 if (my $cb = shift @{ $self->{_queue} }) { 740 if (my $cb = shift @{ $self->{_queue} }) {
740 unless ($cb->($self)) { 741 unless ($cb->($self)) {
741 if ($self->{_eof}) { 742 if ($self->{_eof}) {
768 delete $self->{_rw}; 769 delete $self->{_rw};
769 last; 770 last;
770 } 771 }
771 } 772 }
772 773
774 if ($self->{_eof}) {
775 if ($self->{on_eof}) {
773 $self->{on_eof}($self) 776 $self->{on_eof}($self)
774 if $self->{_eof} && $self->{on_eof}; 777 } else {
778 $self->_error (0, 1);
779 }
780 }
775 781
776 # may need to restart read watcher 782 # may need to restart read watcher
777 unless ($self->{_rw}) { 783 unless ($self->{_rw}) {
778 $self->start_read 784 $self->start_read
779 if $self->{on_read} || @{ $self->{_queue} }; 785 if $self->{on_read} || @{ $self->{_queue} };
905 $cb->($_[0], substr $_[0]{rbuf}, 0, $len, ""); 911 $cb->($_[0], substr $_[0]{rbuf}, 0, $len, "");
906 1 912 1
907 } 913 }
908}; 914};
909 915
910# compatibility with older API
911sub push_read_chunk {
912 $_[0]->push_read (chunk => $_[1], $_[2]);
913}
914
915sub unshift_read_chunk {
916 $_[0]->unshift_read (chunk => $_[1], $_[2]);
917}
918
919=item line => [$eol, ]$cb->($handle, $line, $eol) 916=item line => [$eol, ]$cb->($handle, $line, $eol)
920 917
921The callback will be called only once a full line (including the end of 918The callback will be called only once a full line (including the end of
922line marker, C<$eol>) has been read. This line (excluding the end of line 919line marker, C<$eol>) has been read. This line (excluding the end of line
923marker) will be passed to the callback as second argument (C<$line>), and 920marker) will be passed to the callback as second argument (C<$line>), and
958 $cb->($_[0], $1, $2); 955 $cb->($_[0], $1, $2);
959 1 956 1
960 } 957 }
961 } 958 }
962}; 959};
963
964# compatibility with older API
965sub push_read_line {
966 my $self = shift;
967 $self->push_read (line => @_);
968}
969
970sub unshift_read_line {
971 my $self = shift;
972 $self->unshift_read (line => @_);
973}
974 960
975=item regex => $accept[, $reject[, $skip], $cb->($handle, $data) 961=item regex => $accept[, $reject[, $skip], $cb->($handle, $data)
976 962
977Makes a regex match against the regex object C<$accept> and returns 963Makes a regex match against the regex object C<$accept> and returns
978everything up to and including the match. 964everything up to and including the match.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines