1 | package AnyEvent::Handle; |
1 | package AnyEvent::Handle; |
2 | |
2 | |
3 | no warnings; |
3 | no warnings; |
4 | use strict; |
4 | use strict qw(subs vars); |
5 | |
5 | |
6 | use AnyEvent (); |
6 | use AnyEvent (); |
7 | use AnyEvent::Util qw(WSAEWOULDBLOCK); |
7 | use AnyEvent::Util qw(WSAEWOULDBLOCK); |
8 | use Scalar::Util (); |
8 | use Scalar::Util (); |
9 | use Carp (); |
9 | use Carp (); |
… | |
… | |
730 | ) { |
730 | ) { |
731 | return $self->_error (&Errno::ENOSPC, 1); |
731 | return $self->_error (&Errno::ENOSPC, 1); |
732 | } |
732 | } |
733 | |
733 | |
734 | while () { |
734 | while () { |
735 | no strict 'refs'; |
|
|
736 | |
|
|
737 | my $len = length $self->{rbuf}; |
735 | my $len = length $self->{rbuf}; |
738 | |
736 | |
739 | if (my $cb = shift @{ $self->{_queue} }) { |
737 | if (my $cb = shift @{ $self->{_queue} }) { |
740 | unless ($cb->($self)) { |
738 | unless ($cb->($self)) { |
741 | if ($self->{_eof}) { |
739 | if ($self->{_eof}) { |
… | |
… | |
905 | $cb->($_[0], substr $_[0]{rbuf}, 0, $len, ""); |
903 | $cb->($_[0], substr $_[0]{rbuf}, 0, $len, ""); |
906 | 1 |
904 | 1 |
907 | } |
905 | } |
908 | }; |
906 | }; |
909 | |
907 | |
910 | # compatibility with older API |
|
|
911 | sub push_read_chunk { |
|
|
912 | $_[0]->push_read (chunk => $_[1], $_[2]); |
|
|
913 | } |
|
|
914 | |
|
|
915 | sub unshift_read_chunk { |
|
|
916 | $_[0]->unshift_read (chunk => $_[1], $_[2]); |
|
|
917 | } |
|
|
918 | |
|
|
919 | =item line => [$eol, ]$cb->($handle, $line, $eol) |
908 | =item line => [$eol, ]$cb->($handle, $line, $eol) |
920 | |
909 | |
921 | The callback will be called only once a full line (including the end of |
910 | The callback will be called only once a full line (including the end of |
922 | line marker, C<$eol>) has been read. This line (excluding the end of line |
911 | line marker, C<$eol>) has been read. This line (excluding the end of line |
923 | marker) will be passed to the callback as second argument (C<$line>), and |
912 | marker) will be passed to the callback as second argument (C<$line>), and |
… | |
… | |
958 | $cb->($_[0], $1, $2); |
947 | $cb->($_[0], $1, $2); |
959 | 1 |
948 | 1 |
960 | } |
949 | } |
961 | } |
950 | } |
962 | }; |
951 | }; |
963 | |
|
|
964 | # compatibility with older API |
|
|
965 | sub push_read_line { |
|
|
966 | my $self = shift; |
|
|
967 | $self->push_read (line => @_); |
|
|
968 | } |
|
|
969 | |
|
|
970 | sub unshift_read_line { |
|
|
971 | my $self = shift; |
|
|
972 | $self->unshift_read (line => @_); |
|
|
973 | } |
|
|
974 | |
952 | |
975 | =item regex => $accept[, $reject[, $skip], $cb->($handle, $data) |
953 | =item regex => $accept[, $reject[, $skip], $cb->($handle, $data) |
976 | |
954 | |
977 | Makes a regex match against the regex object C<$accept> and returns |
955 | Makes a regex match against the regex object C<$accept> and returns |
978 | everything up to and including the match. |
956 | everything up to and including the match. |