ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent/Handle.pm
Revision: 1.145
Committed: Mon Jul 6 21:47:14 2009 UTC (14 years, 10 months ago) by root
Branch: MAIN
CVS Tags: rel-4_8
Changes since 1.144: +1 -1 lines
Log Message:
4.8

File Contents

# User Rev Content
1 elmex 1.1 package AnyEvent::Handle;
2    
3 elmex 1.6 no warnings;
4 root 1.79 use strict qw(subs vars);
5 elmex 1.1
6 root 1.8 use AnyEvent ();
7 root 1.42 use AnyEvent::Util qw(WSAEWOULDBLOCK);
8 root 1.8 use Scalar::Util ();
9     use Carp ();
10     use Fcntl ();
11 root 1.43 use Errno qw(EAGAIN EINTR);
12 elmex 1.1
13     =head1 NAME
14    
15 root 1.22 AnyEvent::Handle - non-blocking I/O on file handles via AnyEvent
16 elmex 1.1
17     =cut
18    
19 root 1.145 our $VERSION = 4.8;
20 elmex 1.1
21     =head1 SYNOPSIS
22    
23     use AnyEvent;
24     use AnyEvent::Handle;
25    
26     my $cv = AnyEvent->condvar;
27    
28 root 1.31 my $handle =
29 elmex 1.2 AnyEvent::Handle->new (
30     fh => \*STDIN,
31     on_eof => sub {
32 root 1.107 $cv->send;
33 elmex 1.2 },
34     );
35    
36 root 1.31 # send some request line
37     $handle->push_write ("getinfo\015\012");
38    
39     # read the response line
40     $handle->push_read (line => sub {
41     my ($handle, $line) = @_;
42     warn "read line <$line>\n";
43     $cv->send;
44     });
45    
46     $cv->recv;
47 elmex 1.1
48     =head1 DESCRIPTION
49    
50 root 1.8 This module is a helper module to make it easier to do event-based I/O on
51 elmex 1.13 filehandles. For utility functions for doing non-blocking connects and accepts
52     on sockets see L<AnyEvent::Util>.
53 root 1.8
54 root 1.84 The L<AnyEvent::Intro> tutorial contains some well-documented
55     AnyEvent::Handle examples.
56    
57 root 1.8 In the following, when the documentation refers to of "bytes" then this
58     means characters. As sysread and syswrite are used for all I/O, their
59     treatment of characters applies to this module as well.
60 elmex 1.1
61 root 1.8 All callbacks will be invoked with the handle object as their first
62     argument.
63 elmex 1.1
64     =head1 METHODS
65    
66     =over 4
67    
68 root 1.131 =item $handle = B<new> AnyEvent::TLS fh => $filehandle, key => value...
69 elmex 1.1
70 root 1.131 The constructor supports these arguments (all as C<< key => value >> pairs).
71 elmex 1.1
72     =over 4
73    
74 root 1.8 =item fh => $filehandle [MANDATORY]
75 elmex 1.1
76     The filehandle this L<AnyEvent::Handle> object will operate on.
77    
78 root 1.83 NOTE: The filehandle will be set to non-blocking mode (using
79     C<AnyEvent::Util::fh_nonblocking>) by the constructor and needs to stay in
80     that mode.
81 root 1.8
82 root 1.40 =item on_eof => $cb->($handle)
83 root 1.10
84 root 1.74 Set the callback to be called when an end-of-file condition is detected,
85 root 1.52 i.e. in the case of a socket, when the other side has closed the
86     connection cleanly.
87 root 1.8
88 root 1.82 For sockets, this just means that the other side has stopped sending data,
89 root 1.101 you can still try to write data, and, in fact, one can return from the EOF
90 root 1.82 callback and continue writing data, as only the read part has been shut
91     down.
92    
93 root 1.101 While not mandatory, it is I<highly> recommended to set an EOF callback,
94 root 1.16 otherwise you might end up with a closed socket while you are still
95     waiting for data.
96    
97 root 1.80 If an EOF condition has been detected but no C<on_eof> callback has been
98     set, then a fatal error will be raised with C<$!> set to <0>.
99    
100 root 1.133 =item on_error => $cb->($handle, $fatal, $message)
101 root 1.10
102 root 1.52 This is the error callback, which is called when, well, some error
103     occured, such as not being able to resolve the hostname, failure to
104     connect or a read error.
105    
106     Some errors are fatal (which is indicated by C<$fatal> being true). On
107 root 1.82 fatal errors the handle object will be shut down and will not be usable
108 root 1.88 (but you are free to look at the current C<< ->rbuf >>). Examples of fatal
109 root 1.82 errors are an EOF condition with active (but unsatisifable) read watchers
110     (C<EPIPE>) or I/O errors.
111    
112 root 1.133 AnyEvent::Handle tries to find an appropriate error code for you to check
113     against, but in some cases (TLS errors), this does not work well. It is
114     recommended to always output the C<$message> argument in human-readable
115     error messages (it's usually the same as C<"$!">).
116    
117 root 1.82 Non-fatal errors can be retried by simply returning, but it is recommended
118     to simply ignore this parameter and instead abondon the handle object
119     when this callback is invoked. Examples of non-fatal errors are timeouts
120     C<ETIMEDOUT>) or badly-formatted data (C<EBADMSG>).
121 root 1.8
122 root 1.10 On callback entrance, the value of C<$!> contains the operating system
123 root 1.133 error code (or C<ENOSPC>, C<EPIPE>, C<ETIMEDOUT>, C<EBADMSG> or
124     C<EPROTO>).
125 root 1.8
126 root 1.10 While not mandatory, it is I<highly> recommended to set this callback, as
127     you will not be notified of errors otherwise. The default simply calls
128 root 1.52 C<croak>.
129 root 1.8
130 root 1.40 =item on_read => $cb->($handle)
131 root 1.8
132     This sets the default read callback, which is called when data arrives
133 root 1.61 and no read request is in the queue (unlike read queue callbacks, this
134     callback will only be called when at least one octet of data is in the
135     read buffer).
136 root 1.8
137     To access (and remove data from) the read buffer, use the C<< ->rbuf >>
138 root 1.139 method or access the C<< $handle->{rbuf} >> member directly. Note that you
139 root 1.117 must not enlarge or modify the read buffer, you can only remove data at
140     the beginning from it.
141 root 1.8
142     When an EOF condition is detected then AnyEvent::Handle will first try to
143     feed all the remaining data to the queued callbacks and C<on_read> before
144     calling the C<on_eof> callback. If no progress can be made, then a fatal
145     error will be raised (with C<$!> set to C<EPIPE>).
146 elmex 1.1
147 root 1.40 =item on_drain => $cb->($handle)
148 elmex 1.1
149 root 1.8 This sets the callback that is called when the write buffer becomes empty
150     (or when the callback is set and the buffer is empty already).
151 elmex 1.1
152 root 1.8 To append to the write buffer, use the C<< ->push_write >> method.
153 elmex 1.2
154 root 1.69 This callback is useful when you don't want to put all of your write data
155     into the queue at once, for example, when you want to write the contents
156     of some file to the socket you might not want to read the whole file into
157     memory and push it into the queue, but instead only read more data from
158     the file when the write queue becomes empty.
159    
160 root 1.43 =item timeout => $fractional_seconds
161    
162     If non-zero, then this enables an "inactivity" timeout: whenever this many
163     seconds pass without a successful read or write on the underlying file
164     handle, the C<on_timeout> callback will be invoked (and if that one is
165 root 1.88 missing, a non-fatal C<ETIMEDOUT> error will be raised).
166 root 1.43
167     Note that timeout processing is also active when you currently do not have
168     any outstanding read or write requests: If you plan to keep the connection
169     idle then you should disable the timout temporarily or ignore the timeout
170 root 1.88 in the C<on_timeout> callback, in which case AnyEvent::Handle will simply
171     restart the timeout.
172 root 1.43
173     Zero (the default) disables this timeout.
174    
175     =item on_timeout => $cb->($handle)
176    
177     Called whenever the inactivity timeout passes. If you return from this
178     callback, then the timeout will be reset as if some activity had happened,
179     so this condition is not fatal in any way.
180    
181 root 1.8 =item rbuf_max => <bytes>
182 elmex 1.2
183 root 1.8 If defined, then a fatal error will be raised (with C<$!> set to C<ENOSPC>)
184     when the read buffer ever (strictly) exceeds this size. This is useful to
185 root 1.88 avoid some forms of denial-of-service attacks.
186 elmex 1.2
187 root 1.8 For example, a server accepting connections from untrusted sources should
188     be configured to accept only so-and-so much data that it cannot act on
189     (for example, when expecting a line, an attacker could send an unlimited
190     amount of data without a callback ever being called as long as the line
191     isn't finished).
192 elmex 1.2
193 root 1.70 =item autocork => <boolean>
194    
195     When disabled (the default), then C<push_write> will try to immediately
196 root 1.88 write the data to the handle, if possible. This avoids having to register
197     a write watcher and wait for the next event loop iteration, but can
198     be inefficient if you write multiple small chunks (on the wire, this
199     disadvantage is usually avoided by your kernel's nagle algorithm, see
200     C<no_delay>, but this option can save costly syscalls).
201 root 1.70
202     When enabled, then writes will always be queued till the next event loop
203     iteration. This is efficient when you do many small writes per iteration,
204 root 1.88 but less efficient when you do a single write only per iteration (or when
205     the write buffer often is full). It also increases write latency.
206 root 1.70
207     =item no_delay => <boolean>
208    
209     When doing small writes on sockets, your operating system kernel might
210     wait a bit for more data before actually sending it out. This is called
211     the Nagle algorithm, and usually it is beneficial.
212    
213 root 1.88 In some situations you want as low a delay as possible, which can be
214     accomplishd by setting this option to a true value.
215 root 1.70
216 root 1.88 The default is your opertaing system's default behaviour (most likely
217     enabled), this option explicitly enables or disables it, if possible.
218 root 1.70
219 root 1.8 =item read_size => <bytes>
220 elmex 1.2
221 root 1.88 The default read block size (the amount of bytes this module will
222     try to read during each loop iteration, which affects memory
223     requirements). Default: C<8192>.
224 root 1.8
225     =item low_water_mark => <bytes>
226    
227     Sets the amount of bytes (default: C<0>) that make up an "empty" write
228     buffer: If the write reaches this size or gets even samller it is
229     considered empty.
230 elmex 1.2
231 root 1.88 Sometimes it can be beneficial (for performance reasons) to add data to
232     the write buffer before it is fully drained, but this is a rare case, as
233     the operating system kernel usually buffers data as well, so the default
234     is good in almost all cases.
235    
236 root 1.62 =item linger => <seconds>
237    
238     If non-zero (default: C<3600>), then the destructor of the
239 root 1.88 AnyEvent::Handle object will check whether there is still outstanding
240     write data and will install a watcher that will write this data to the
241     socket. No errors will be reported (this mostly matches how the operating
242     system treats outstanding data at socket close time).
243 root 1.62
244 root 1.88 This will not work for partial TLS data that could not be encoded
245 root 1.93 yet. This data will be lost. Calling the C<stoptls> method in time might
246     help.
247 root 1.62
248 root 1.133 =item peername => $string
249    
250 root 1.134 A string used to identify the remote site - usually the DNS hostname
251     (I<not> IDN!) used to create the connection, rarely the IP address.
252 root 1.131
253 root 1.133 Apart from being useful in error messages, this string is also used in TLS
254 root 1.144 peername verification (see C<verify_peername> in L<AnyEvent::TLS>). This
255     verification will be skipped when C<peername> is not specified or
256     C<undef>.
257 root 1.131
258 root 1.19 =item tls => "accept" | "connect" | Net::SSLeay::SSL object
259    
260 root 1.85 When this parameter is given, it enables TLS (SSL) mode, that means
261 root 1.88 AnyEvent will start a TLS handshake as soon as the conenction has been
262     established and will transparently encrypt/decrypt data afterwards.
263 root 1.19
264 root 1.133 All TLS protocol errors will be signalled as C<EPROTO>, with an
265     appropriate error message.
266    
267 root 1.26 TLS mode requires Net::SSLeay to be installed (it will be loaded
268 root 1.88 automatically when you try to create a TLS handle): this module doesn't
269     have a dependency on that module, so if your module requires it, you have
270     to add the dependency yourself.
271 root 1.26
272 root 1.85 Unlike TCP, TLS has a server and client side: for the TLS server side, use
273     C<accept>, and for the TLS client side of a connection, use C<connect>
274     mode.
275 root 1.19
276     You can also provide your own TLS connection object, but you have
277     to make sure that you call either C<Net::SSLeay::set_connect_state>
278     or C<Net::SSLeay::set_accept_state> on it before you pass it to
279 root 1.131 AnyEvent::Handle. Also, this module will take ownership of this connection
280     object.
281    
282     At some future point, AnyEvent::Handle might switch to another TLS
283     implementation, then the option to use your own session object will go
284     away.
285 root 1.19
286 root 1.109 B<IMPORTANT:> since Net::SSLeay "objects" are really only integers,
287     passing in the wrong integer will lead to certain crash. This most often
288     happens when one uses a stylish C<< tls => 1 >> and is surprised about the
289     segmentation fault.
290    
291 root 1.88 See the C<< ->starttls >> method for when need to start TLS negotiation later.
292 root 1.26
293 root 1.131 =item tls_ctx => $anyevent_tls
294 root 1.19
295 root 1.131 Use the given C<AnyEvent::TLS> object to create the new TLS connection
296 root 1.19 (unless a connection object was specified directly). If this parameter is
297     missing, then AnyEvent::Handle will use C<AnyEvent::Handle::TLS_CTX>.
298    
299 root 1.131 Instead of an object, you can also specify a hash reference with C<< key
300     => value >> pairs. Those will be passed to L<AnyEvent::TLS> to create a
301     new TLS context object.
302    
303 root 1.143 =item on_starttls => $cb->($handle, $success[, $error_message])
304 root 1.142
305     This callback will be invoked when the TLS/SSL handshake has finished. If
306     C<$success> is true, then the TLS handshake succeeded, otherwise it failed
307     (C<on_stoptls> will not be called in this case).
308    
309     The session in C<< $handle->{tls} >> can still be examined in this
310     callback, even when the handshake was not successful.
311    
312 root 1.143 TLS handshake failures will not cause C<on_error> to be invoked when this
313     callback is in effect, instead, the error message will be passed to C<on_starttls>.
314    
315     Without this callback, handshake failures lead to C<on_error> being
316     called, as normal.
317    
318     Note that you cannot call C<starttls> right again in this callback. If you
319     need to do that, start an zero-second timer instead whose callback can
320     then call C<< ->starttls >> again.
321    
322 root 1.142 =item on_stoptls => $cb->($handle)
323    
324     When a SSLv3/TLS shutdown/close notify/EOF is detected and this callback is
325     set, then it will be invoked after freeing the TLS session. If it is not,
326     then a TLS shutdown condition will be treated like a normal EOF condition
327     on the handle.
328    
329     The session in C<< $handle->{tls} >> can still be examined in this
330     callback.
331    
332     This callback will only be called on TLS shutdowns, not when the
333     underlying handle signals EOF.
334    
335 root 1.40 =item json => JSON or JSON::XS object
336    
337     This is the json coder object used by the C<json> read and write types.
338    
339 root 1.41 If you don't supply it, then AnyEvent::Handle will create and use a
340 root 1.86 suitable one (on demand), which will write and expect UTF-8 encoded JSON
341     texts.
342 root 1.40
343     Note that you are responsible to depend on the JSON module if you want to
344     use this functionality, as AnyEvent does not have a dependency itself.
345    
346 elmex 1.1 =back
347    
348     =cut
349    
350     sub new {
351 root 1.8 my $class = shift;
352     my $self = bless { @_ }, $class;
353    
354     $self->{fh} or Carp::croak "mandatory argument fh is missing";
355    
356     AnyEvent::Util::fh_nonblocking $self->{fh}, 1;
357 elmex 1.1
358 root 1.131 $self->{_activity} = AnyEvent->now;
359     $self->_timeout;
360    
361     $self->no_delay (delete $self->{no_delay}) if exists $self->{no_delay};
362    
363 root 1.94 $self->starttls (delete $self->{tls}, delete $self->{tls_ctx})
364     if $self->{tls};
365 root 1.19
366 root 1.143 $self->on_drain (delete $self->{on_drain}) if $self->{on_drain};
367 root 1.10
368 root 1.66 $self->start_read
369 root 1.67 if $self->{on_read};
370 root 1.66
371 root 1.131 $self->{fh} && $self
372 root 1.8 }
373 elmex 1.2
374 root 1.8 sub _shutdown {
375     my ($self) = @_;
376 elmex 1.2
377 elmex 1.132 delete @$self{qw(_tw _rw _ww fh wbuf on_read _queue)};
378 root 1.131 $self->{_eof} = 1; # tell starttls et. al to stop trying
379 root 1.52
380 root 1.92 &_freetls;
381 root 1.8 }
382    
383 root 1.52 sub _error {
384 root 1.133 my ($self, $errno, $fatal, $message) = @_;
385 root 1.8
386 root 1.52 $self->_shutdown
387     if $fatal;
388 elmex 1.1
389 root 1.52 $! = $errno;
390 root 1.133 $message ||= "$!";
391 root 1.37
392 root 1.52 if ($self->{on_error}) {
393 root 1.133 $self->{on_error}($self, $fatal, $message);
394 root 1.100 } elsif ($self->{fh}) {
395 root 1.133 Carp::croak "AnyEvent::Handle uncaught error: $message";
396 root 1.52 }
397 elmex 1.1 }
398    
399 root 1.8 =item $fh = $handle->fh
400 elmex 1.1
401 root 1.88 This method returns the file handle used to create the L<AnyEvent::Handle> object.
402 elmex 1.1
403     =cut
404    
405 root 1.38 sub fh { $_[0]{fh} }
406 elmex 1.1
407 root 1.8 =item $handle->on_error ($cb)
408 elmex 1.1
409 root 1.8 Replace the current C<on_error> callback (see the C<on_error> constructor argument).
410 elmex 1.1
411 root 1.8 =cut
412    
413     sub on_error {
414     $_[0]{on_error} = $_[1];
415     }
416    
417     =item $handle->on_eof ($cb)
418    
419     Replace the current C<on_eof> callback (see the C<on_eof> constructor argument).
420 elmex 1.1
421     =cut
422    
423 root 1.8 sub on_eof {
424     $_[0]{on_eof} = $_[1];
425     }
426    
427 root 1.43 =item $handle->on_timeout ($cb)
428    
429 root 1.88 Replace the current C<on_timeout> callback, or disables the callback (but
430     not the timeout) if C<$cb> = C<undef>. See the C<timeout> constructor
431     argument and method.
432 root 1.43
433     =cut
434    
435     sub on_timeout {
436     $_[0]{on_timeout} = $_[1];
437     }
438    
439 root 1.70 =item $handle->autocork ($boolean)
440    
441     Enables or disables the current autocork behaviour (see C<autocork>
442 root 1.105 constructor argument). Changes will only take effect on the next write.
443 root 1.70
444     =cut
445    
446 root 1.105 sub autocork {
447     $_[0]{autocork} = $_[1];
448     }
449    
450 root 1.70 =item $handle->no_delay ($boolean)
451    
452     Enables or disables the C<no_delay> setting (see constructor argument of
453     the same name for details).
454    
455     =cut
456    
457     sub no_delay {
458     $_[0]{no_delay} = $_[1];
459    
460     eval {
461     local $SIG{__DIE__};
462     setsockopt $_[0]{fh}, &Socket::IPPROTO_TCP, &Socket::TCP_NODELAY, int $_[1];
463     };
464     }
465    
466 root 1.142 =item $handle->on_starttls ($cb)
467    
468     Replace the current C<on_starttls> callback (see the C<on_starttls> constructor argument).
469    
470     =cut
471    
472     sub on_starttls {
473     $_[0]{on_starttls} = $_[1];
474     }
475    
476     =item $handle->on_stoptls ($cb)
477    
478     Replace the current C<on_stoptls> callback (see the C<on_stoptls> constructor argument).
479    
480     =cut
481    
482     sub on_starttls {
483     $_[0]{on_stoptls} = $_[1];
484     }
485    
486 root 1.43 #############################################################################
487    
488     =item $handle->timeout ($seconds)
489    
490     Configures (or disables) the inactivity timeout.
491    
492     =cut
493    
494     sub timeout {
495     my ($self, $timeout) = @_;
496    
497     $self->{timeout} = $timeout;
498     $self->_timeout;
499     }
500    
501     # reset the timeout watcher, as neccessary
502     # also check for time-outs
503     sub _timeout {
504     my ($self) = @_;
505    
506     if ($self->{timeout}) {
507 root 1.44 my $NOW = AnyEvent->now;
508 root 1.43
509     # when would the timeout trigger?
510     my $after = $self->{_activity} + $self->{timeout} - $NOW;
511    
512     # now or in the past already?
513     if ($after <= 0) {
514     $self->{_activity} = $NOW;
515    
516     if ($self->{on_timeout}) {
517 root 1.48 $self->{on_timeout}($self);
518 root 1.43 } else {
519 root 1.52 $self->_error (&Errno::ETIMEDOUT);
520 root 1.43 }
521    
522 root 1.56 # callback could have changed timeout value, optimise
523 root 1.43 return unless $self->{timeout};
524    
525     # calculate new after
526     $after = $self->{timeout};
527     }
528    
529     Scalar::Util::weaken $self;
530 root 1.56 return unless $self; # ->error could have destroyed $self
531 root 1.43
532     $self->{_tw} ||= AnyEvent->timer (after => $after, cb => sub {
533     delete $self->{_tw};
534     $self->_timeout;
535     });
536     } else {
537     delete $self->{_tw};
538     }
539     }
540    
541 root 1.9 #############################################################################
542    
543     =back
544    
545     =head2 WRITE QUEUE
546    
547     AnyEvent::Handle manages two queues per handle, one for writing and one
548     for reading.
549    
550     The write queue is very simple: you can add data to its end, and
551     AnyEvent::Handle will automatically try to get rid of it for you.
552    
553 elmex 1.20 When data could be written and the write buffer is shorter then the low
554 root 1.9 water mark, the C<on_drain> callback will be invoked.
555    
556     =over 4
557    
558 root 1.8 =item $handle->on_drain ($cb)
559    
560     Sets the C<on_drain> callback or clears it (see the description of
561     C<on_drain> in the constructor).
562    
563     =cut
564    
565     sub on_drain {
566 elmex 1.1 my ($self, $cb) = @_;
567    
568 root 1.8 $self->{on_drain} = $cb;
569    
570     $cb->($self)
571 root 1.93 if $cb && $self->{low_water_mark} >= (length $self->{wbuf}) + (length $self->{_tls_wbuf});
572 root 1.8 }
573    
574     =item $handle->push_write ($data)
575    
576     Queues the given scalar to be written. You can push as much data as you
577     want (only limited by the available memory), as C<AnyEvent::Handle>
578     buffers it independently of the kernel.
579    
580     =cut
581    
582 root 1.17 sub _drain_wbuf {
583     my ($self) = @_;
584 root 1.8
585 root 1.38 if (!$self->{_ww} && length $self->{wbuf}) {
586 root 1.35
587 root 1.8 Scalar::Util::weaken $self;
588 root 1.35
589 root 1.8 my $cb = sub {
590     my $len = syswrite $self->{fh}, $self->{wbuf};
591    
592 root 1.29 if ($len >= 0) {
593 root 1.8 substr $self->{wbuf}, 0, $len, "";
594    
595 root 1.44 $self->{_activity} = AnyEvent->now;
596 root 1.43
597 root 1.8 $self->{on_drain}($self)
598 root 1.93 if $self->{low_water_mark} >= (length $self->{wbuf}) + (length $self->{_tls_wbuf})
599 root 1.8 && $self->{on_drain};
600    
601 root 1.38 delete $self->{_ww} unless length $self->{wbuf};
602 root 1.42 } elsif ($! != EAGAIN && $! != EINTR && $! != WSAEWOULDBLOCK) {
603 root 1.52 $self->_error ($!, 1);
604 elmex 1.1 }
605 root 1.8 };
606    
607 root 1.35 # try to write data immediately
608 root 1.70 $cb->() unless $self->{autocork};
609 root 1.8
610 root 1.35 # if still data left in wbuf, we need to poll
611 root 1.38 $self->{_ww} = AnyEvent->io (fh => $self->{fh}, poll => "w", cb => $cb)
612 root 1.35 if length $self->{wbuf};
613 root 1.8 };
614     }
615    
616 root 1.30 our %WH;
617    
618     sub register_write_type($$) {
619     $WH{$_[0]} = $_[1];
620     }
621    
622 root 1.17 sub push_write {
623     my $self = shift;
624    
625 root 1.29 if (@_ > 1) {
626     my $type = shift;
627    
628     @_ = ($WH{$type} or Carp::croak "unsupported type passed to AnyEvent::Handle::push_write")
629     ->($self, @_);
630     }
631    
632 root 1.93 if ($self->{tls}) {
633     $self->{_tls_wbuf} .= $_[0];
634 root 1.97
635 root 1.93 &_dotls ($self);
636 root 1.17 } else {
637     $self->{wbuf} .= $_[0];
638     $self->_drain_wbuf;
639     }
640     }
641    
642 root 1.29 =item $handle->push_write (type => @args)
643    
644     Instead of formatting your data yourself, you can also let this module do
645     the job by specifying a type and type-specific arguments.
646    
647 root 1.30 Predefined types are (if you have ideas for additional types, feel free to
648     drop by and tell us):
649 root 1.29
650     =over 4
651    
652     =item netstring => $string
653    
654     Formats the given value as netstring
655     (http://cr.yp.to/proto/netstrings.txt, this is not a recommendation to use them).
656    
657     =cut
658    
659     register_write_type netstring => sub {
660     my ($self, $string) = @_;
661    
662 root 1.96 (length $string) . ":$string,"
663 root 1.29 };
664    
665 root 1.61 =item packstring => $format, $data
666    
667     An octet string prefixed with an encoded length. The encoding C<$format>
668     uses the same format as a Perl C<pack> format, but must specify a single
669     integer only (only one of C<cCsSlLqQiInNvVjJw> is allowed, plus an
670     optional C<!>, C<< < >> or C<< > >> modifier).
671    
672     =cut
673    
674     register_write_type packstring => sub {
675     my ($self, $format, $string) = @_;
676    
677 root 1.65 pack "$format/a*", $string
678 root 1.61 };
679    
680 root 1.39 =item json => $array_or_hashref
681    
682 root 1.40 Encodes the given hash or array reference into a JSON object. Unless you
683     provide your own JSON object, this means it will be encoded to JSON text
684     in UTF-8.
685    
686     JSON objects (and arrays) are self-delimiting, so you can write JSON at
687     one end of a handle and read them at the other end without using any
688     additional framing.
689    
690 root 1.41 The generated JSON text is guaranteed not to contain any newlines: While
691     this module doesn't need delimiters after or between JSON texts to be
692     able to read them, many other languages depend on that.
693    
694     A simple RPC protocol that interoperates easily with others is to send
695     JSON arrays (or objects, although arrays are usually the better choice as
696     they mimic how function argument passing works) and a newline after each
697     JSON text:
698    
699     $handle->push_write (json => ["method", "arg1", "arg2"]); # whatever
700     $handle->push_write ("\012");
701    
702     An AnyEvent::Handle receiver would simply use the C<json> read type and
703     rely on the fact that the newline will be skipped as leading whitespace:
704    
705     $handle->push_read (json => sub { my $array = $_[1]; ... });
706    
707     Other languages could read single lines terminated by a newline and pass
708     this line into their JSON decoder of choice.
709    
710 root 1.40 =cut
711    
712     register_write_type json => sub {
713     my ($self, $ref) = @_;
714    
715     require JSON;
716    
717     $self->{json} ? $self->{json}->encode ($ref)
718     : JSON::encode_json ($ref)
719     };
720    
721 root 1.63 =item storable => $reference
722    
723     Freezes the given reference using L<Storable> and writes it to the
724     handle. Uses the C<nfreeze> format.
725    
726     =cut
727    
728     register_write_type storable => sub {
729     my ($self, $ref) = @_;
730    
731     require Storable;
732    
733 root 1.65 pack "w/a*", Storable::nfreeze ($ref)
734 root 1.63 };
735    
736 root 1.53 =back
737    
738 root 1.133 =item $handle->push_shutdown
739    
740     Sometimes you know you want to close the socket after writing your data
741     before it was actually written. One way to do that is to replace your
742 root 1.142 C<on_drain> handler by a callback that shuts down the socket (and set
743     C<low_water_mark> to C<0>). This method is a shorthand for just that, and
744     replaces the C<on_drain> callback with:
745 root 1.133
746     sub { shutdown $_[0]{fh}, 1 } # for push_shutdown
747    
748     This simply shuts down the write side and signals an EOF condition to the
749     the peer.
750    
751     You can rely on the normal read queue and C<on_eof> handling
752     afterwards. This is the cleanest way to close a connection.
753    
754     =cut
755    
756     sub push_shutdown {
757 root 1.142 my ($self) = @_;
758    
759     delete $self->{low_water_mark};
760     $self->on_drain (sub { shutdown $_[0]{fh}, 1 });
761 root 1.133 }
762    
763 root 1.40 =item AnyEvent::Handle::register_write_type type => $coderef->($handle, @args)
764 root 1.30
765     This function (not method) lets you add your own types to C<push_write>.
766     Whenever the given C<type> is used, C<push_write> will invoke the code
767     reference with the handle object and the remaining arguments.
768 root 1.29
769 root 1.30 The code reference is supposed to return a single octet string that will
770     be appended to the write buffer.
771 root 1.29
772 root 1.30 Note that this is a function, and all types registered this way will be
773     global, so try to use unique names.
774 root 1.29
775 root 1.30 =cut
776 root 1.29
777 root 1.8 #############################################################################
778    
779 root 1.9 =back
780    
781     =head2 READ QUEUE
782    
783     AnyEvent::Handle manages two queues per handle, one for writing and one
784     for reading.
785    
786     The read queue is more complex than the write queue. It can be used in two
787     ways, the "simple" way, using only C<on_read> and the "complex" way, using
788     a queue.
789    
790     In the simple case, you just install an C<on_read> callback and whenever
791     new data arrives, it will be called. You can then remove some data (if
792 root 1.69 enough is there) from the read buffer (C<< $handle->rbuf >>). Or you cna
793     leave the data there if you want to accumulate more (e.g. when only a
794     partial message has been received so far).
795 root 1.9
796     In the more complex case, you want to queue multiple callbacks. In this
797     case, AnyEvent::Handle will call the first queued callback each time new
798 root 1.61 data arrives (also the first time it is queued) and removes it when it has
799     done its job (see C<push_read>, below).
800 root 1.9
801     This way you can, for example, push three line-reads, followed by reading
802     a chunk of data, and AnyEvent::Handle will execute them in order.
803    
804     Example 1: EPP protocol parser. EPP sends 4 byte length info, followed by
805     the specified number of bytes which give an XML datagram.
806    
807     # in the default state, expect some header bytes
808     $handle->on_read (sub {
809     # some data is here, now queue the length-header-read (4 octets)
810 root 1.52 shift->unshift_read (chunk => 4, sub {
811 root 1.9 # header arrived, decode
812     my $len = unpack "N", $_[1];
813    
814     # now read the payload
815 root 1.52 shift->unshift_read (chunk => $len, sub {
816 root 1.9 my $xml = $_[1];
817     # handle xml
818     });
819     });
820     });
821    
822 root 1.69 Example 2: Implement a client for a protocol that replies either with "OK"
823     and another line or "ERROR" for the first request that is sent, and 64
824     bytes for the second request. Due to the availability of a queue, we can
825     just pipeline sending both requests and manipulate the queue as necessary
826     in the callbacks.
827    
828     When the first callback is called and sees an "OK" response, it will
829     C<unshift> another line-read. This line-read will be queued I<before> the
830     64-byte chunk callback.
831 root 1.9
832 root 1.69 # request one, returns either "OK + extra line" or "ERROR"
833 root 1.9 $handle->push_write ("request 1\015\012");
834    
835     # we expect "ERROR" or "OK" as response, so push a line read
836 root 1.52 $handle->push_read (line => sub {
837 root 1.9 # if we got an "OK", we have to _prepend_ another line,
838     # so it will be read before the second request reads its 64 bytes
839     # which are already in the queue when this callback is called
840     # we don't do this in case we got an error
841     if ($_[1] eq "OK") {
842 root 1.52 $_[0]->unshift_read (line => sub {
843 root 1.9 my $response = $_[1];
844     ...
845     });
846     }
847     });
848    
849 root 1.69 # request two, simply returns 64 octets
850 root 1.9 $handle->push_write ("request 2\015\012");
851    
852     # simply read 64 bytes, always
853 root 1.52 $handle->push_read (chunk => 64, sub {
854 root 1.9 my $response = $_[1];
855     ...
856     });
857    
858     =over 4
859    
860 root 1.10 =cut
861    
862 root 1.8 sub _drain_rbuf {
863     my ($self) = @_;
864 elmex 1.1
865 root 1.59 local $self->{_in_drain} = 1;
866    
867 root 1.17 if (
868     defined $self->{rbuf_max}
869     && $self->{rbuf_max} < length $self->{rbuf}
870     ) {
871 root 1.82 $self->_error (&Errno::ENOSPC, 1), return;
872 root 1.17 }
873    
874 root 1.59 while () {
875 root 1.117 # we need to use a separate tls read buffer, as we must not receive data while
876     # we are draining the buffer, and this can only happen with TLS.
877 root 1.116 $self->{rbuf} .= delete $self->{_tls_rbuf} if exists $self->{_tls_rbuf};
878 root 1.115
879 root 1.59 my $len = length $self->{rbuf};
880 elmex 1.1
881 root 1.38 if (my $cb = shift @{ $self->{_queue} }) {
882 root 1.29 unless ($cb->($self)) {
883 root 1.38 if ($self->{_eof}) {
884 root 1.10 # no progress can be made (not enough data and no data forthcoming)
885 root 1.82 $self->_error (&Errno::EPIPE, 1), return;
886 root 1.10 }
887    
888 root 1.38 unshift @{ $self->{_queue} }, $cb;
889 root 1.55 last;
890 root 1.8 }
891     } elsif ($self->{on_read}) {
892 root 1.61 last unless $len;
893    
894 root 1.8 $self->{on_read}($self);
895    
896     if (
897 root 1.55 $len == length $self->{rbuf} # if no data has been consumed
898     && !@{ $self->{_queue} } # and the queue is still empty
899     && $self->{on_read} # but we still have on_read
900 root 1.8 ) {
901 root 1.55 # no further data will arrive
902     # so no progress can be made
903 root 1.82 $self->_error (&Errno::EPIPE, 1), return
904 root 1.55 if $self->{_eof};
905    
906     last; # more data might arrive
907 elmex 1.1 }
908 root 1.8 } else {
909     # read side becomes idle
910 root 1.93 delete $self->{_rw} unless $self->{tls};
911 root 1.55 last;
912 root 1.8 }
913     }
914    
915 root 1.80 if ($self->{_eof}) {
916     if ($self->{on_eof}) {
917     $self->{on_eof}($self)
918     } else {
919 root 1.140 $self->_error (0, 1, "Unexpected end-of-file");
920 root 1.80 }
921     }
922 root 1.55
923     # may need to restart read watcher
924     unless ($self->{_rw}) {
925     $self->start_read
926     if $self->{on_read} || @{ $self->{_queue} };
927     }
928 elmex 1.1 }
929    
930 root 1.8 =item $handle->on_read ($cb)
931 elmex 1.1
932 root 1.8 This replaces the currently set C<on_read> callback, or clears it (when
933     the new callback is C<undef>). See the description of C<on_read> in the
934     constructor.
935 elmex 1.1
936 root 1.8 =cut
937    
938     sub on_read {
939     my ($self, $cb) = @_;
940 elmex 1.1
941 root 1.8 $self->{on_read} = $cb;
942 root 1.59 $self->_drain_rbuf if $cb && !$self->{_in_drain};
943 elmex 1.1 }
944    
945 root 1.8 =item $handle->rbuf
946    
947     Returns the read buffer (as a modifiable lvalue).
948 elmex 1.1
949 root 1.117 You can access the read buffer directly as the C<< ->{rbuf} >>
950     member, if you want. However, the only operation allowed on the
951     read buffer (apart from looking at it) is removing data from its
952     beginning. Otherwise modifying or appending to it is not allowed and will
953     lead to hard-to-track-down bugs.
954 elmex 1.1
955 root 1.8 NOTE: The read buffer should only be used or modified if the C<on_read>,
956     C<push_read> or C<unshift_read> methods are used. The other read methods
957     automatically manage the read buffer.
958 elmex 1.1
959     =cut
960    
961 elmex 1.2 sub rbuf : lvalue {
962 root 1.8 $_[0]{rbuf}
963 elmex 1.2 }
964 elmex 1.1
965 root 1.8 =item $handle->push_read ($cb)
966    
967     =item $handle->unshift_read ($cb)
968    
969     Append the given callback to the end of the queue (C<push_read>) or
970     prepend it (C<unshift_read>).
971    
972     The callback is called each time some additional read data arrives.
973 elmex 1.1
974 elmex 1.20 It must check whether enough data is in the read buffer already.
975 elmex 1.1
976 root 1.8 If not enough data is available, it must return the empty list or a false
977     value, in which case it will be called repeatedly until enough data is
978     available (or an error condition is detected).
979    
980     If enough data was available, then the callback must remove all data it is
981     interested in (which can be none at all) and return a true value. After returning
982     true, it will be removed from the queue.
983 elmex 1.1
984     =cut
985    
986 root 1.30 our %RH;
987    
988     sub register_read_type($$) {
989     $RH{$_[0]} = $_[1];
990     }
991    
992 root 1.8 sub push_read {
993 root 1.28 my $self = shift;
994     my $cb = pop;
995    
996     if (@_) {
997     my $type = shift;
998    
999     $cb = ($RH{$type} or Carp::croak "unsupported type passed to AnyEvent::Handle::push_read")
1000     ->($self, $cb, @_);
1001     }
1002 elmex 1.1
1003 root 1.38 push @{ $self->{_queue} }, $cb;
1004 root 1.59 $self->_drain_rbuf unless $self->{_in_drain};
1005 elmex 1.1 }
1006    
1007 root 1.8 sub unshift_read {
1008 root 1.28 my $self = shift;
1009     my $cb = pop;
1010    
1011     if (@_) {
1012     my $type = shift;
1013    
1014     $cb = ($RH{$type} or Carp::croak "unsupported type passed to AnyEvent::Handle::unshift_read")
1015     ->($self, $cb, @_);
1016     }
1017    
1018 root 1.8
1019 root 1.38 unshift @{ $self->{_queue} }, $cb;
1020 root 1.59 $self->_drain_rbuf unless $self->{_in_drain};
1021 root 1.8 }
1022 elmex 1.1
1023 root 1.28 =item $handle->push_read (type => @args, $cb)
1024 elmex 1.1
1025 root 1.28 =item $handle->unshift_read (type => @args, $cb)
1026 elmex 1.1
1027 root 1.28 Instead of providing a callback that parses the data itself you can chose
1028     between a number of predefined parsing formats, for chunks of data, lines
1029     etc.
1030 elmex 1.1
1031 root 1.30 Predefined types are (if you have ideas for additional types, feel free to
1032     drop by and tell us):
1033 root 1.28
1034     =over 4
1035    
1036 root 1.40 =item chunk => $octets, $cb->($handle, $data)
1037 root 1.28
1038     Invoke the callback only once C<$octets> bytes have been read. Pass the
1039     data read to the callback. The callback will never be called with less
1040     data.
1041    
1042     Example: read 2 bytes.
1043    
1044     $handle->push_read (chunk => 2, sub {
1045     warn "yay ", unpack "H*", $_[1];
1046     });
1047 elmex 1.1
1048     =cut
1049    
1050 root 1.28 register_read_type chunk => sub {
1051     my ($self, $cb, $len) = @_;
1052 elmex 1.1
1053 root 1.8 sub {
1054     $len <= length $_[0]{rbuf} or return;
1055 elmex 1.12 $cb->($_[0], substr $_[0]{rbuf}, 0, $len, "");
1056 root 1.8 1
1057     }
1058 root 1.28 };
1059 root 1.8
1060 root 1.40 =item line => [$eol, ]$cb->($handle, $line, $eol)
1061 elmex 1.1
1062 root 1.8 The callback will be called only once a full line (including the end of
1063     line marker, C<$eol>) has been read. This line (excluding the end of line
1064     marker) will be passed to the callback as second argument (C<$line>), and
1065     the end of line marker as the third argument (C<$eol>).
1066 elmex 1.1
1067 root 1.8 The end of line marker, C<$eol>, can be either a string, in which case it
1068     will be interpreted as a fixed record end marker, or it can be a regex
1069     object (e.g. created by C<qr>), in which case it is interpreted as a
1070     regular expression.
1071 elmex 1.1
1072 root 1.8 The end of line marker argument C<$eol> is optional, if it is missing (NOT
1073     undef), then C<qr|\015?\012|> is used (which is good for most internet
1074     protocols).
1075 elmex 1.1
1076 root 1.8 Partial lines at the end of the stream will never be returned, as they are
1077     not marked by the end of line marker.
1078 elmex 1.1
1079 root 1.8 =cut
1080 elmex 1.1
1081 root 1.28 register_read_type line => sub {
1082     my ($self, $cb, $eol) = @_;
1083 elmex 1.1
1084 root 1.76 if (@_ < 3) {
1085     # this is more than twice as fast as the generic code below
1086     sub {
1087     $_[0]{rbuf} =~ s/^([^\015\012]*)(\015?\012)// or return;
1088 elmex 1.1
1089 root 1.76 $cb->($_[0], $1, $2);
1090     1
1091     }
1092     } else {
1093     $eol = quotemeta $eol unless ref $eol;
1094     $eol = qr|^(.*?)($eol)|s;
1095    
1096     sub {
1097     $_[0]{rbuf} =~ s/$eol// or return;
1098 elmex 1.1
1099 root 1.76 $cb->($_[0], $1, $2);
1100     1
1101     }
1102 root 1.8 }
1103 root 1.28 };
1104 elmex 1.1
1105 root 1.40 =item regex => $accept[, $reject[, $skip], $cb->($handle, $data)
1106 root 1.36
1107     Makes a regex match against the regex object C<$accept> and returns
1108     everything up to and including the match.
1109    
1110     Example: read a single line terminated by '\n'.
1111    
1112     $handle->push_read (regex => qr<\n>, sub { ... });
1113    
1114     If C<$reject> is given and not undef, then it determines when the data is
1115     to be rejected: it is matched against the data when the C<$accept> regex
1116     does not match and generates an C<EBADMSG> error when it matches. This is
1117     useful to quickly reject wrong data (to avoid waiting for a timeout or a
1118     receive buffer overflow).
1119    
1120     Example: expect a single decimal number followed by whitespace, reject
1121     anything else (not the use of an anchor).
1122    
1123     $handle->push_read (regex => qr<^[0-9]+\s>, qr<[^0-9]>, sub { ... });
1124    
1125     If C<$skip> is given and not C<undef>, then it will be matched against
1126     the receive buffer when neither C<$accept> nor C<$reject> match,
1127     and everything preceding and including the match will be accepted
1128     unconditionally. This is useful to skip large amounts of data that you
1129     know cannot be matched, so that the C<$accept> or C<$reject> regex do not
1130     have to start matching from the beginning. This is purely an optimisation
1131     and is usually worth only when you expect more than a few kilobytes.
1132    
1133     Example: expect a http header, which ends at C<\015\012\015\012>. Since we
1134     expect the header to be very large (it isn't in practise, but...), we use
1135     a skip regex to skip initial portions. The skip regex is tricky in that
1136     it only accepts something not ending in either \015 or \012, as these are
1137     required for the accept regex.
1138    
1139     $handle->push_read (regex =>
1140     qr<\015\012\015\012>,
1141     undef, # no reject
1142     qr<^.*[^\015\012]>,
1143     sub { ... });
1144    
1145     =cut
1146    
1147     register_read_type regex => sub {
1148     my ($self, $cb, $accept, $reject, $skip) = @_;
1149    
1150     my $data;
1151     my $rbuf = \$self->{rbuf};
1152    
1153     sub {
1154     # accept
1155     if ($$rbuf =~ $accept) {
1156     $data .= substr $$rbuf, 0, $+[0], "";
1157     $cb->($self, $data);
1158     return 1;
1159     }
1160    
1161     # reject
1162     if ($reject && $$rbuf =~ $reject) {
1163 root 1.52 $self->_error (&Errno::EBADMSG);
1164 root 1.36 }
1165    
1166     # skip
1167     if ($skip && $$rbuf =~ $skip) {
1168     $data .= substr $$rbuf, 0, $+[0], "";
1169     }
1170    
1171     ()
1172     }
1173     };
1174    
1175 root 1.61 =item netstring => $cb->($handle, $string)
1176    
1177     A netstring (http://cr.yp.to/proto/netstrings.txt, this is not an endorsement).
1178    
1179     Throws an error with C<$!> set to EBADMSG on format violations.
1180    
1181     =cut
1182    
1183     register_read_type netstring => sub {
1184     my ($self, $cb) = @_;
1185    
1186     sub {
1187     unless ($_[0]{rbuf} =~ s/^(0|[1-9][0-9]*)://) {
1188     if ($_[0]{rbuf} =~ /[^0-9]/) {
1189     $self->_error (&Errno::EBADMSG);
1190     }
1191     return;
1192     }
1193    
1194     my $len = $1;
1195    
1196     $self->unshift_read (chunk => $len, sub {
1197     my $string = $_[1];
1198     $_[0]->unshift_read (chunk => 1, sub {
1199     if ($_[1] eq ",") {
1200     $cb->($_[0], $string);
1201     } else {
1202     $self->_error (&Errno::EBADMSG);
1203     }
1204     });
1205     });
1206    
1207     1
1208     }
1209     };
1210    
1211     =item packstring => $format, $cb->($handle, $string)
1212    
1213     An octet string prefixed with an encoded length. The encoding C<$format>
1214     uses the same format as a Perl C<pack> format, but must specify a single
1215     integer only (only one of C<cCsSlLqQiInNvVjJw> is allowed, plus an
1216     optional C<!>, C<< < >> or C<< > >> modifier).
1217    
1218 root 1.96 For example, DNS over TCP uses a prefix of C<n> (2 octet network order),
1219     EPP uses a prefix of C<N> (4 octtes).
1220 root 1.61
1221     Example: read a block of data prefixed by its length in BER-encoded
1222     format (very efficient).
1223    
1224     $handle->push_read (packstring => "w", sub {
1225     my ($handle, $data) = @_;
1226     });
1227    
1228     =cut
1229    
1230     register_read_type packstring => sub {
1231     my ($self, $cb, $format) = @_;
1232    
1233     sub {
1234     # when we can use 5.10 we can use ".", but for 5.8 we use the re-pack method
1235 root 1.76 defined (my $len = eval { unpack $format, $_[0]{rbuf} })
1236 root 1.61 or return;
1237    
1238 root 1.77 $format = length pack $format, $len;
1239 root 1.61
1240 root 1.77 # bypass unshift if we already have the remaining chunk
1241     if ($format + $len <= length $_[0]{rbuf}) {
1242     my $data = substr $_[0]{rbuf}, $format, $len;
1243     substr $_[0]{rbuf}, 0, $format + $len, "";
1244     $cb->($_[0], $data);
1245     } else {
1246     # remove prefix
1247     substr $_[0]{rbuf}, 0, $format, "";
1248    
1249     # read remaining chunk
1250     $_[0]->unshift_read (chunk => $len, $cb);
1251     }
1252 root 1.61
1253     1
1254     }
1255     };
1256    
1257 root 1.40 =item json => $cb->($handle, $hash_or_arrayref)
1258    
1259 root 1.110 Reads a JSON object or array, decodes it and passes it to the
1260     callback. When a parse error occurs, an C<EBADMSG> error will be raised.
1261 root 1.40
1262     If a C<json> object was passed to the constructor, then that will be used
1263     for the final decode, otherwise it will create a JSON coder expecting UTF-8.
1264    
1265     This read type uses the incremental parser available with JSON version
1266     2.09 (and JSON::XS version 2.2) and above. You have to provide a
1267     dependency on your own: this module will load the JSON module, but
1268     AnyEvent does not depend on it itself.
1269    
1270     Since JSON texts are fully self-delimiting, the C<json> read and write
1271 root 1.41 types are an ideal simple RPC protocol: just exchange JSON datagrams. See
1272     the C<json> write type description, above, for an actual example.
1273 root 1.40
1274     =cut
1275    
1276     register_read_type json => sub {
1277 root 1.63 my ($self, $cb) = @_;
1278 root 1.40
1279 root 1.135 my $json = $self->{json} ||=
1280     eval { require JSON::XS; JSON::XS->new->utf8 }
1281     || do { require JSON; JSON->new->utf8 };
1282 root 1.40
1283     my $data;
1284     my $rbuf = \$self->{rbuf};
1285    
1286     sub {
1287 root 1.113 my $ref = eval { $json->incr_parse ($self->{rbuf}) };
1288 root 1.110
1289 root 1.113 if ($ref) {
1290     $self->{rbuf} = $json->incr_text;
1291     $json->incr_text = "";
1292     $cb->($self, $ref);
1293 root 1.110
1294     1
1295 root 1.113 } elsif ($@) {
1296 root 1.111 # error case
1297 root 1.110 $json->incr_skip;
1298 root 1.40
1299     $self->{rbuf} = $json->incr_text;
1300     $json->incr_text = "";
1301    
1302 root 1.110 $self->_error (&Errno::EBADMSG);
1303 root 1.114
1304 root 1.113 ()
1305     } else {
1306     $self->{rbuf} = "";
1307 root 1.114
1308 root 1.113 ()
1309     }
1310 root 1.40 }
1311     };
1312    
1313 root 1.63 =item storable => $cb->($handle, $ref)
1314    
1315     Deserialises a L<Storable> frozen representation as written by the
1316     C<storable> write type (BER-encoded length prefix followed by nfreeze'd
1317     data).
1318    
1319     Raises C<EBADMSG> error if the data could not be decoded.
1320    
1321     =cut
1322    
1323     register_read_type storable => sub {
1324     my ($self, $cb) = @_;
1325    
1326     require Storable;
1327    
1328     sub {
1329     # when we can use 5.10 we can use ".", but for 5.8 we use the re-pack method
1330 root 1.76 defined (my $len = eval { unpack "w", $_[0]{rbuf} })
1331 root 1.63 or return;
1332    
1333 root 1.77 my $format = length pack "w", $len;
1334 root 1.63
1335 root 1.77 # bypass unshift if we already have the remaining chunk
1336     if ($format + $len <= length $_[0]{rbuf}) {
1337     my $data = substr $_[0]{rbuf}, $format, $len;
1338     substr $_[0]{rbuf}, 0, $format + $len, "";
1339     $cb->($_[0], Storable::thaw ($data));
1340     } else {
1341     # remove prefix
1342     substr $_[0]{rbuf}, 0, $format, "";
1343    
1344     # read remaining chunk
1345     $_[0]->unshift_read (chunk => $len, sub {
1346     if (my $ref = eval { Storable::thaw ($_[1]) }) {
1347     $cb->($_[0], $ref);
1348     } else {
1349     $self->_error (&Errno::EBADMSG);
1350     }
1351     });
1352     }
1353    
1354     1
1355 root 1.63 }
1356     };
1357    
1358 root 1.28 =back
1359    
1360 root 1.40 =item AnyEvent::Handle::register_read_type type => $coderef->($handle, $cb, @args)
1361 root 1.30
1362     This function (not method) lets you add your own types to C<push_read>.
1363    
1364     Whenever the given C<type> is used, C<push_read> will invoke the code
1365     reference with the handle object, the callback and the remaining
1366     arguments.
1367    
1368     The code reference is supposed to return a callback (usually a closure)
1369     that works as a plain read callback (see C<< ->push_read ($cb) >>).
1370    
1371     It should invoke the passed callback when it is done reading (remember to
1372 root 1.40 pass C<$handle> as first argument as all other callbacks do that).
1373 root 1.30
1374     Note that this is a function, and all types registered this way will be
1375     global, so try to use unique names.
1376    
1377     For examples, see the source of this module (F<perldoc -m AnyEvent::Handle>,
1378     search for C<register_read_type>)).
1379    
1380 root 1.10 =item $handle->stop_read
1381    
1382     =item $handle->start_read
1383    
1384 root 1.18 In rare cases you actually do not want to read anything from the
1385 root 1.58 socket. In this case you can call C<stop_read>. Neither C<on_read> nor
1386 root 1.22 any queued callbacks will be executed then. To start reading again, call
1387 root 1.10 C<start_read>.
1388    
1389 root 1.56 Note that AnyEvent::Handle will automatically C<start_read> for you when
1390     you change the C<on_read> callback or push/unshift a read callback, and it
1391     will automatically C<stop_read> for you when neither C<on_read> is set nor
1392     there are any read requests in the queue.
1393    
1394 root 1.93 These methods will have no effect when in TLS mode (as TLS doesn't support
1395     half-duplex connections).
1396    
1397 root 1.10 =cut
1398    
1399     sub stop_read {
1400     my ($self) = @_;
1401 elmex 1.1
1402 root 1.93 delete $self->{_rw} unless $self->{tls};
1403 root 1.8 }
1404 elmex 1.1
1405 root 1.10 sub start_read {
1406     my ($self) = @_;
1407    
1408 root 1.38 unless ($self->{_rw} || $self->{_eof}) {
1409 root 1.10 Scalar::Util::weaken $self;
1410    
1411 root 1.38 $self->{_rw} = AnyEvent->io (fh => $self->{fh}, poll => "r", cb => sub {
1412 root 1.93 my $rbuf = \($self->{tls} ? my $buf : $self->{rbuf});
1413 root 1.17 my $len = sysread $self->{fh}, $$rbuf, $self->{read_size} || 8192, length $$rbuf;
1414 root 1.10
1415     if ($len > 0) {
1416 root 1.44 $self->{_activity} = AnyEvent->now;
1417 root 1.43
1418 root 1.93 if ($self->{tls}) {
1419     Net::SSLeay::BIO_write ($self->{_rbio}, $$rbuf);
1420 root 1.97
1421 root 1.93 &_dotls ($self);
1422     } else {
1423     $self->_drain_rbuf unless $self->{_in_drain};
1424     }
1425 root 1.10
1426     } elsif (defined $len) {
1427 root 1.38 delete $self->{_rw};
1428     $self->{_eof} = 1;
1429 root 1.59 $self->_drain_rbuf unless $self->{_in_drain};
1430 root 1.10
1431 root 1.42 } elsif ($! != EAGAIN && $! != EINTR && $! != WSAEWOULDBLOCK) {
1432 root 1.52 return $self->_error ($!, 1);
1433 root 1.10 }
1434     });
1435     }
1436 elmex 1.1 }
1437    
1438 root 1.133 our $ERROR_SYSCALL;
1439     our $ERROR_WANT_READ;
1440    
1441     sub _tls_error {
1442     my ($self, $err) = @_;
1443    
1444     return $self->_error ($!, 1)
1445     if $err == Net::SSLeay::ERROR_SYSCALL ();
1446    
1447 root 1.137 my $err =Net::SSLeay::ERR_error_string (Net::SSLeay::ERR_get_error ());
1448    
1449     # reduce error string to look less scary
1450     $err =~ s/^error:[0-9a-fA-F]{8}:[^:]+:([^:]+):/\L$1: /;
1451    
1452 root 1.143 if ($self->{_on_starttls}) {
1453     (delete $self->{_on_starttls})->($self, undef, $err);
1454     &_freetls;
1455     } else {
1456     &_freetls;
1457     $self->_error (&Errno::EPROTO, 1, $err);
1458     }
1459 root 1.133 }
1460    
1461 root 1.97 # poll the write BIO and send the data if applicable
1462 root 1.133 # also decode read data if possible
1463     # this is basiclaly our TLS state machine
1464     # more efficient implementations are possible with openssl,
1465     # but not with the buggy and incomplete Net::SSLeay.
1466 root 1.19 sub _dotls {
1467     my ($self) = @_;
1468    
1469 root 1.97 my $tmp;
1470 root 1.56
1471 root 1.38 if (length $self->{_tls_wbuf}) {
1472 root 1.97 while (($tmp = Net::SSLeay::write ($self->{tls}, $self->{_tls_wbuf})) > 0) {
1473     substr $self->{_tls_wbuf}, 0, $tmp, "";
1474 root 1.22 }
1475 root 1.133
1476     $tmp = Net::SSLeay::get_error ($self->{tls}, $tmp);
1477     return $self->_tls_error ($tmp)
1478     if $tmp != $ERROR_WANT_READ
1479 root 1.142 && ($tmp != $ERROR_SYSCALL || $!);
1480 root 1.19 }
1481    
1482 root 1.97 while (defined ($tmp = Net::SSLeay::read ($self->{tls}))) {
1483     unless (length $tmp) {
1484 root 1.143 $self->{_on_starttls}
1485     and (delete $self->{_on_starttls})->($self, undef, "EOF during handshake"); # ???
1486 root 1.92 &_freetls;
1487 root 1.143
1488 root 1.142 if ($self->{on_stoptls}) {
1489     $self->{on_stoptls}($self);
1490     return;
1491     } else {
1492     # let's treat SSL-eof as we treat normal EOF
1493     delete $self->{_rw};
1494     $self->{_eof} = 1;
1495     }
1496 root 1.56 }
1497 root 1.91
1498 root 1.116 $self->{_tls_rbuf} .= $tmp;
1499 root 1.91 $self->_drain_rbuf unless $self->{_in_drain};
1500 root 1.92 $self->{tls} or return; # tls session might have gone away in callback
1501 root 1.23 }
1502    
1503 root 1.97 $tmp = Net::SSLeay::get_error ($self->{tls}, -1);
1504 root 1.133 return $self->_tls_error ($tmp)
1505     if $tmp != $ERROR_WANT_READ
1506 root 1.142 && ($tmp != $ERROR_SYSCALL || $!);
1507 root 1.91
1508 root 1.97 while (length ($tmp = Net::SSLeay::BIO_read ($self->{_wbio}))) {
1509     $self->{wbuf} .= $tmp;
1510 root 1.91 $self->_drain_wbuf;
1511     }
1512 root 1.142
1513     $self->{_on_starttls}
1514     and Net::SSLeay::state ($self->{tls}) == Net::SSLeay::ST_OK ()
1515 root 1.143 and (delete $self->{_on_starttls})->($self, 1, "TLS/SSL connection established");
1516 root 1.19 }
1517    
1518 root 1.25 =item $handle->starttls ($tls[, $tls_ctx])
1519    
1520     Instead of starting TLS negotiation immediately when the AnyEvent::Handle
1521     object is created, you can also do that at a later time by calling
1522     C<starttls>.
1523    
1524     The first argument is the same as the C<tls> constructor argument (either
1525     C<"connect">, C<"accept"> or an existing Net::SSLeay object).
1526    
1527 root 1.131 The second argument is the optional C<AnyEvent::TLS> object that is used
1528     when AnyEvent::Handle has to create its own TLS connection object, or
1529     a hash reference with C<< key => value >> pairs that will be used to
1530     construct a new context.
1531    
1532     The TLS connection object will end up in C<< $handle->{tls} >>, the TLS
1533     context in C<< $handle->{tls_ctx} >> after this call and can be used or
1534     changed to your liking. Note that the handshake might have already started
1535     when this function returns.
1536 root 1.38
1537 root 1.92 If it an error to start a TLS handshake more than once per
1538     AnyEvent::Handle object (this is due to bugs in OpenSSL).
1539    
1540 root 1.25 =cut
1541    
1542 root 1.137 our %TLS_CACHE; #TODO not yet documented, should we?
1543    
1544 root 1.19 sub starttls {
1545     my ($self, $ssl, $ctx) = @_;
1546    
1547 root 1.94 require Net::SSLeay;
1548    
1549 root 1.102 Carp::croak "it is an error to call starttls more than once on an AnyEvent::Handle object"
1550 root 1.92 if $self->{tls};
1551 root 1.131
1552 root 1.142 $ERROR_SYSCALL = Net::SSLeay::ERROR_SYSCALL ();
1553     $ERROR_WANT_READ = Net::SSLeay::ERROR_WANT_READ ();
1554 root 1.133
1555 root 1.131 $ctx ||= $self->{tls_ctx};
1556    
1557     if ("HASH" eq ref $ctx) {
1558     require AnyEvent::TLS;
1559    
1560     local $Carp::CarpLevel = 1; # skip ourselves when creating a new context
1561 root 1.137
1562     if ($ctx->{cache}) {
1563     my $key = $ctx+0;
1564     $ctx = $TLS_CACHE{$key} ||= new AnyEvent::TLS %$ctx;
1565     } else {
1566     $ctx = new AnyEvent::TLS %$ctx;
1567     }
1568 root 1.131 }
1569 root 1.92
1570 root 1.131 $self->{tls_ctx} = $ctx || TLS_CTX ();
1571 root 1.133 $self->{tls} = $ssl = $self->{tls_ctx}->_get_session ($ssl, $self, $self->{peername});
1572 root 1.19
1573 root 1.21 # basically, this is deep magic (because SSL_read should have the same issues)
1574     # but the openssl maintainers basically said: "trust us, it just works".
1575     # (unfortunately, we have to hardcode constants because the abysmally misdesigned
1576     # and mismaintained ssleay-module doesn't even offer them).
1577 root 1.27 # http://www.mail-archive.com/openssl-dev@openssl.org/msg22420.html
1578 root 1.87 #
1579     # in short: this is a mess.
1580     #
1581 root 1.93 # note that we do not try to keep the length constant between writes as we are required to do.
1582 root 1.87 # we assume that most (but not all) of this insanity only applies to non-blocking cases,
1583 root 1.93 # and we drive openssl fully in blocking mode here. Or maybe we don't - openssl seems to
1584     # have identity issues in that area.
1585 root 1.131 # Net::SSLeay::CTX_set_mode ($ssl,
1586     # (eval { local $SIG{__DIE__}; Net::SSLeay::MODE_ENABLE_PARTIAL_WRITE () } || 1)
1587     # | (eval { local $SIG{__DIE__}; Net::SSLeay::MODE_ACCEPT_MOVING_WRITE_BUFFER () } || 2));
1588     Net::SSLeay::CTX_set_mode ($ssl, 1|2);
1589 root 1.21
1590 root 1.38 $self->{_rbio} = Net::SSLeay::BIO_new (Net::SSLeay::BIO_s_mem ());
1591     $self->{_wbio} = Net::SSLeay::BIO_new (Net::SSLeay::BIO_s_mem ());
1592 root 1.19
1593 root 1.38 Net::SSLeay::set_bio ($ssl, $self->{_rbio}, $self->{_wbio});
1594 root 1.19
1595 root 1.142 $self->{_on_starttls} = sub { $_[0]{on_starttls}(@_) }
1596 root 1.143 if $self->{on_starttls};
1597 root 1.142
1598 root 1.93 &_dotls; # need to trigger the initial handshake
1599     $self->start_read; # make sure we actually do read
1600 root 1.19 }
1601    
1602 root 1.25 =item $handle->stoptls
1603    
1604 root 1.92 Shuts down the SSL connection - this makes a proper EOF handshake by
1605     sending a close notify to the other side, but since OpenSSL doesn't
1606     support non-blocking shut downs, it is not possible to re-use the stream
1607     afterwards.
1608 root 1.25
1609     =cut
1610    
1611     sub stoptls {
1612     my ($self) = @_;
1613    
1614 root 1.92 if ($self->{tls}) {
1615 root 1.94 Net::SSLeay::shutdown ($self->{tls});
1616 root 1.92
1617     &_dotls;
1618    
1619 root 1.142 # # we don't give a shit. no, we do, but we can't. no...#d#
1620     # # we, we... have to use openssl :/#d#
1621     # &_freetls;#d#
1622 root 1.92 }
1623     }
1624    
1625     sub _freetls {
1626     my ($self) = @_;
1627    
1628     return unless $self->{tls};
1629 root 1.38
1630 root 1.131 $self->{tls_ctx}->_put_session (delete $self->{tls});
1631 root 1.92
1632 root 1.143 delete @$self{qw(_rbio _wbio _tls_wbuf _on_starttls)};
1633 root 1.25 }
1634    
1635 root 1.19 sub DESTROY {
1636 root 1.120 my ($self) = @_;
1637 root 1.19
1638 root 1.92 &_freetls;
1639 root 1.62
1640     my $linger = exists $self->{linger} ? $self->{linger} : 3600;
1641    
1642     if ($linger && length $self->{wbuf}) {
1643     my $fh = delete $self->{fh};
1644     my $wbuf = delete $self->{wbuf};
1645    
1646     my @linger;
1647    
1648     push @linger, AnyEvent->io (fh => $fh, poll => "w", cb => sub {
1649     my $len = syswrite $fh, $wbuf, length $wbuf;
1650    
1651     if ($len > 0) {
1652     substr $wbuf, 0, $len, "";
1653     } else {
1654     @linger = (); # end
1655     }
1656     });
1657     push @linger, AnyEvent->timer (after => $linger, cb => sub {
1658     @linger = ();
1659     });
1660     }
1661 root 1.19 }
1662    
1663 root 1.99 =item $handle->destroy
1664    
1665 root 1.101 Shuts down the handle object as much as possible - this call ensures that
1666 root 1.141 no further callbacks will be invoked and as many resources as possible
1667     will be freed. You must not call any methods on the object afterwards.
1668 root 1.99
1669 root 1.101 Normally, you can just "forget" any references to an AnyEvent::Handle
1670     object and it will simply shut down. This works in fatal error and EOF
1671     callbacks, as well as code outside. It does I<NOT> work in a read or write
1672     callback, so when you want to destroy the AnyEvent::Handle object from
1673     within such an callback. You I<MUST> call C<< ->destroy >> explicitly in
1674     that case.
1675    
1676 root 1.99 The handle might still linger in the background and write out remaining
1677     data, as specified by the C<linger> option, however.
1678    
1679     =cut
1680    
1681     sub destroy {
1682     my ($self) = @_;
1683    
1684     $self->DESTROY;
1685     %$self = ();
1686     }
1687    
1688 root 1.19 =item AnyEvent::Handle::TLS_CTX
1689    
1690 root 1.131 This function creates and returns the AnyEvent::TLS object used by default
1691     for TLS mode.
1692 root 1.19
1693 root 1.131 The context is created by calling L<AnyEvent::TLS> without any arguments.
1694 root 1.19
1695     =cut
1696    
1697     our $TLS_CTX;
1698    
1699     sub TLS_CTX() {
1700 root 1.131 $TLS_CTX ||= do {
1701     require AnyEvent::TLS;
1702 root 1.19
1703 root 1.131 new AnyEvent::TLS
1704 root 1.19 }
1705     }
1706    
1707 elmex 1.1 =back
1708    
1709 root 1.95
1710     =head1 NONFREQUENTLY ASKED QUESTIONS
1711    
1712     =over 4
1713    
1714 root 1.101 =item I C<undef> the AnyEvent::Handle reference inside my callback and
1715     still get further invocations!
1716    
1717     That's because AnyEvent::Handle keeps a reference to itself when handling
1718     read or write callbacks.
1719    
1720     It is only safe to "forget" the reference inside EOF or error callbacks,
1721     from within all other callbacks, you need to explicitly call the C<<
1722     ->destroy >> method.
1723    
1724     =item I get different callback invocations in TLS mode/Why can't I pause
1725     reading?
1726    
1727     Unlike, say, TCP, TLS connections do not consist of two independent
1728     communication channels, one for each direction. Or put differently. The
1729     read and write directions are not independent of each other: you cannot
1730     write data unless you are also prepared to read, and vice versa.
1731    
1732     This can mean than, in TLS mode, you might get C<on_error> or C<on_eof>
1733     callback invocations when you are not expecting any read data - the reason
1734     is that AnyEvent::Handle always reads in TLS mode.
1735    
1736     During the connection, you have to make sure that you always have a
1737     non-empty read-queue, or an C<on_read> watcher. At the end of the
1738     connection (or when you no longer want to use it) you can call the
1739     C<destroy> method.
1740    
1741 root 1.95 =item How do I read data until the other side closes the connection?
1742    
1743 root 1.96 If you just want to read your data into a perl scalar, the easiest way
1744     to achieve this is by setting an C<on_read> callback that does nothing,
1745     clearing the C<on_eof> callback and in the C<on_error> callback, the data
1746     will be in C<$_[0]{rbuf}>:
1747 root 1.95
1748     $handle->on_read (sub { });
1749     $handle->on_eof (undef);
1750     $handle->on_error (sub {
1751     my $data = delete $_[0]{rbuf};
1752     undef $handle;
1753     });
1754    
1755     The reason to use C<on_error> is that TCP connections, due to latencies
1756     and packets loss, might get closed quite violently with an error, when in
1757     fact, all data has been received.
1758    
1759 root 1.101 It is usually better to use acknowledgements when transferring data,
1760 root 1.95 to make sure the other side hasn't just died and you got the data
1761     intact. This is also one reason why so many internet protocols have an
1762     explicit QUIT command.
1763    
1764 root 1.96 =item I don't want to destroy the handle too early - how do I wait until
1765     all data has been written?
1766 root 1.95
1767     After writing your last bits of data, set the C<on_drain> callback
1768     and destroy the handle in there - with the default setting of
1769     C<low_water_mark> this will be called precisely when all data has been
1770     written to the socket:
1771    
1772     $handle->push_write (...);
1773     $handle->on_drain (sub {
1774     warn "all data submitted to the kernel\n";
1775     undef $handle;
1776     });
1777    
1778 root 1.143 If you just want to queue some data and then signal EOF to the other side,
1779     consider using C<< ->push_shutdown >> instead.
1780    
1781     =item I want to contact a TLS/SSL server, I don't care about security.
1782    
1783     If your TLS server is a pure TLS server (e.g. HTTPS) that only speaks TLS,
1784     simply connect to it and then create the AnyEvent::Handle with the C<tls>
1785     parameter:
1786    
1787 root 1.144 tcp_connect $host, $port, sub {
1788     my ($fh) = @_;
1789 root 1.143
1790 root 1.144 my $handle = new AnyEvent::Handle
1791     fh => $fh,
1792     tls => "connect",
1793     on_error => sub { ... };
1794    
1795     $handle->push_write (...);
1796     };
1797 root 1.143
1798     =item I want to contact a TLS/SSL server, I do care about security.
1799    
1800 root 1.144 Then you should additionally enable certificate verification, including
1801     peername verification, if the protocol you use supports it (see
1802     L<AnyEvent::TLS>, C<verify_peername>).
1803    
1804     E.g. for HTTPS:
1805    
1806     tcp_connect $host, $port, sub {
1807     my ($fh) = @_;
1808    
1809     my $handle = new AnyEvent::Handle
1810     fh => $fh,
1811     peername => $host,
1812     tls => "connect",
1813     tls_ctx => { verify => 1, verify_peername => "https" },
1814     ...
1815    
1816     Note that you must specify the hostname you connected to (or whatever
1817     "peername" the protocol needs) as the C<peername> argument, otherwise no
1818     peername verification will be done.
1819    
1820     The above will use the system-dependent default set of trusted CA
1821     certificates. If you want to check against a specific CA, add the
1822     C<ca_file> (or C<ca_cert>) arguments to C<tls_ctx>:
1823    
1824     tls_ctx => {
1825     verify => 1,
1826     verify_peername => "https",
1827     ca_file => "my-ca-cert.pem",
1828     },
1829    
1830     =item I want to create a TLS/SSL server, how do I do that?
1831    
1832     Well, you first need to get a server certificate and key. You have
1833     three options: a) ask a CA (buy one, use cacert.org etc.) b) create a
1834     self-signed certificate (cheap. check the search engine of your choice,
1835     there are many tutorials on the net) or c) make your own CA (tinyca2 is a
1836     nice program for that purpose).
1837    
1838     Then create a file with your private key (in PEM format, see
1839     L<AnyEvent::TLS>), followed by the certificate (also in PEM format). The
1840     file should then look like this:
1841    
1842     -----BEGIN RSA PRIVATE KEY-----
1843     ...header data
1844     ... lots of base64'y-stuff
1845     -----END RSA PRIVATE KEY-----
1846    
1847     -----BEGIN CERTIFICATE-----
1848     ... lots of base64'y-stuff
1849     -----END CERTIFICATE-----
1850    
1851     The important bits are the "PRIVATE KEY" and "CERTIFICATE" parts. Then
1852     specify this file as C<cert_file>:
1853    
1854     tcp_server undef, $port, sub {
1855     my ($fh) = @_;
1856    
1857     my $handle = new AnyEvent::Handle
1858     fh => $fh,
1859     tls => "accept",
1860     tls_ctx => { cert_file => "my-server-keycert.pem" },
1861     ...
1862 root 1.143
1863 root 1.144 When you have intermediate CA certificates that your clients might not
1864     know about, just append them to the C<cert_file>.
1865 root 1.143
1866 root 1.95 =back
1867    
1868    
1869 root 1.38 =head1 SUBCLASSING AnyEvent::Handle
1870    
1871     In many cases, you might want to subclass AnyEvent::Handle.
1872    
1873     To make this easier, a given version of AnyEvent::Handle uses these
1874     conventions:
1875    
1876     =over 4
1877    
1878     =item * all constructor arguments become object members.
1879    
1880     At least initially, when you pass a C<tls>-argument to the constructor it
1881 root 1.75 will end up in C<< $handle->{tls} >>. Those members might be changed or
1882 root 1.38 mutated later on (for example C<tls> will hold the TLS connection object).
1883    
1884     =item * other object member names are prefixed with an C<_>.
1885    
1886     All object members not explicitly documented (internal use) are prefixed
1887     with an underscore character, so the remaining non-C<_>-namespace is free
1888     for use for subclasses.
1889    
1890     =item * all members not documented here and not prefixed with an underscore
1891     are free to use in subclasses.
1892    
1893     Of course, new versions of AnyEvent::Handle may introduce more "public"
1894     member variables, but thats just life, at least it is documented.
1895    
1896     =back
1897    
1898 elmex 1.1 =head1 AUTHOR
1899    
1900 root 1.8 Robin Redeker C<< <elmex at ta-sa.org> >>, Marc Lehmann <schmorp@schmorp.de>.
1901 elmex 1.1
1902     =cut
1903    
1904     1; # End of AnyEvent::Handle