1 | package AnyEvent::Handle; |
1 | package AnyEvent::Handle; |
2 | |
2 | |
3 | no warnings; |
|
|
4 | use strict qw(subs vars); |
|
|
5 | |
|
|
6 | use AnyEvent (); |
|
|
7 | use AnyEvent::Util qw(WSAEWOULDBLOCK); |
|
|
8 | use Scalar::Util (); |
3 | use Scalar::Util (); |
9 | use Carp (); |
4 | use Carp (); |
10 | use Fcntl (); |
|
|
11 | use Errno qw(EAGAIN EINTR); |
5 | use Errno qw(EAGAIN EINTR); |
12 | |
6 | |
|
|
7 | use AnyEvent (); BEGIN { AnyEvent::common_sense } |
|
|
8 | use AnyEvent::Util qw(WSAEWOULDBLOCK); |
|
|
9 | |
13 | =head1 NAME |
10 | =head1 NAME |
14 | |
11 | |
15 | AnyEvent::Handle - non-blocking I/O on file handles via AnyEvent |
12 | AnyEvent::Handle - non-blocking I/O on file handles via AnyEvent |
16 | |
13 | |
17 | =cut |
14 | =cut |
18 | |
15 | |
19 | our $VERSION = 4.82; |
16 | our $VERSION = 4.83; |
20 | |
17 | |
21 | =head1 SYNOPSIS |
18 | =head1 SYNOPSIS |
22 | |
19 | |
23 | use AnyEvent; |
20 | use AnyEvent; |
24 | use AnyEvent::Handle; |
21 | use AnyEvent::Handle; |
… | |
… | |
26 | my $cv = AnyEvent->condvar; |
23 | my $cv = AnyEvent->condvar; |
27 | |
24 | |
28 | my $hdl; $hdl = new AnyEvent::Handle |
25 | my $hdl; $hdl = new AnyEvent::Handle |
29 | fh => \*STDIN, |
26 | fh => \*STDIN, |
30 | on_error => sub { |
27 | on_error => sub { |
|
|
28 | my ($hdl, $fatal, $msg) = @_; |
31 | warn "got error $_[2]\n"; |
29 | warn "got error $msg\n"; |
|
|
30 | $hdl->destroy; |
32 | $cv->send; |
31 | $cv->send; |
33 | ); |
32 | ); |
34 | |
33 | |
35 | # send some request line |
34 | # send some request line |
36 | $hdl->push_write ("getinfo\015\012"); |
35 | $hdl->push_write ("getinfo\015\012"); |
… | |
… | |
388 | $! = $errno; |
387 | $! = $errno; |
389 | $message ||= "$!"; |
388 | $message ||= "$!"; |
390 | |
389 | |
391 | if ($self->{on_error}) { |
390 | if ($self->{on_error}) { |
392 | $self->{on_error}($self, $fatal, $message); |
391 | $self->{on_error}($self, $fatal, $message); |
393 | $self->destroy; |
392 | $self->destroy if $fatal; |
394 | } elsif ($self->{fh}) { |
393 | } elsif ($self->{fh}) { |
395 | $self->destroy; |
394 | $self->destroy; |
396 | Carp::croak "AnyEvent::Handle uncaught error: $message"; |
395 | Carp::croak "AnyEvent::Handle uncaught error: $message"; |
397 | } |
396 | } |
398 | } |
397 | } |