ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent/Handle.pm
Revision: 1.233
Committed: Thu Apr 5 06:14:10 2012 UTC (12 years, 2 months ago) by root
Branch: MAIN
CVS Tags: rel-7_0
Changes since 1.232: +11 -5 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 elmex 1.1 =head1 NAME
2    
3 root 1.194 AnyEvent::Handle - non-blocking I/O on streaming handles via AnyEvent
4 elmex 1.1
5     =head1 SYNOPSIS
6    
7     use AnyEvent;
8     use AnyEvent::Handle;
9    
10     my $cv = AnyEvent->condvar;
11    
12 root 1.149 my $hdl; $hdl = new AnyEvent::Handle
13     fh => \*STDIN,
14     on_error => sub {
15 root 1.151 my ($hdl, $fatal, $msg) = @_;
16 root 1.233 AE::log error => $msg;
17 root 1.151 $hdl->destroy;
18 root 1.149 $cv->send;
19 root 1.188 };
20 elmex 1.2
21 root 1.31 # send some request line
22 root 1.149 $hdl->push_write ("getinfo\015\012");
23 root 1.31
24     # read the response line
25 root 1.149 $hdl->push_read (line => sub {
26     my ($hdl, $line) = @_;
27 root 1.225 say "got line <$line>";
28 root 1.31 $cv->send;
29     });
30    
31     $cv->recv;
32 elmex 1.1
33     =head1 DESCRIPTION
34    
35 root 1.198 This is a helper module to make it easier to do event-based I/O on
36     stream-based filehandles (sockets, pipes, and other stream things).
37 root 1.8
38 root 1.84 The L<AnyEvent::Intro> tutorial contains some well-documented
39     AnyEvent::Handle examples.
40    
41 root 1.198 In the following, where the documentation refers to "bytes", it means
42     characters. As sysread and syswrite are used for all I/O, their
43 root 1.8 treatment of characters applies to this module as well.
44 elmex 1.1
45 root 1.159 At the very minimum, you should specify C<fh> or C<connect>, and the
46     C<on_error> callback.
47    
48 root 1.8 All callbacks will be invoked with the handle object as their first
49     argument.
50 elmex 1.1
51 root 1.176 =cut
52    
53     package AnyEvent::Handle;
54    
55     use Scalar::Util ();
56     use List::Util ();
57     use Carp ();
58     use Errno qw(EAGAIN EINTR);
59    
60     use AnyEvent (); BEGIN { AnyEvent::common_sense }
61     use AnyEvent::Util qw(WSAEWOULDBLOCK);
62    
63 root 1.177 our $VERSION = $AnyEvent::VERSION;
64    
65 root 1.185 sub _load_func($) {
66     my $func = $_[0];
67    
68     unless (defined &$func) {
69     my $pkg = $func;
70     do {
71     $pkg =~ s/::[^:]+$//
72     or return;
73     eval "require $pkg";
74     } until defined &$func;
75     }
76    
77     \&$func
78     }
79    
80 root 1.203 sub MAX_READ_SIZE() { 131072 }
81    
82 elmex 1.1 =head1 METHODS
83    
84     =over 4
85    
86 root 1.191 =item $handle = B<new> AnyEvent::Handle fh => $filehandle, key => value...
87 elmex 1.1
88 root 1.131 The constructor supports these arguments (all as C<< key => value >> pairs).
89 elmex 1.1
90     =over 4
91    
92 root 1.159 =item fh => $filehandle [C<fh> or C<connect> MANDATORY]
93 root 1.158
94 elmex 1.1 The filehandle this L<AnyEvent::Handle> object will operate on.
95 root 1.83 NOTE: The filehandle will be set to non-blocking mode (using
96     C<AnyEvent::Util::fh_nonblocking>) by the constructor and needs to stay in
97     that mode.
98 root 1.8
99 root 1.159 =item connect => [$host, $service] [C<fh> or C<connect> MANDATORY]
100    
101     Try to connect to the specified host and service (port), using
102     C<AnyEvent::Socket::tcp_connect>. The C<$host> additionally becomes the
103     default C<peername>.
104    
105     You have to specify either this parameter, or C<fh>, above.
106    
107 root 1.160 It is possible to push requests on the read and write queues, and modify
108     properties of the stream, even while AnyEvent::Handle is connecting.
109    
110 root 1.159 When this parameter is specified, then the C<on_prepare>,
111     C<on_connect_error> and C<on_connect> callbacks will be called under the
112     appropriate circumstances:
113    
114     =over 4
115    
116     =item on_prepare => $cb->($handle)
117    
118     This (rarely used) callback is called before a new connection is
119 root 1.210 attempted, but after the file handle has been created (you can access that
120     file handle via C<< $handle->{fh} >>). It could be used to prepare the
121     file handle with parameters required for the actual connect (as opposed to
122     settings that can be changed when the connection is already established).
123 root 1.159
124 root 1.161 The return value of this callback should be the connect timeout value in
125 root 1.198 seconds (or C<0>, or C<undef>, or the empty list, to indicate that the
126     default timeout is to be used).
127 root 1.161
128 root 1.159 =item on_connect => $cb->($handle, $host, $port, $retry->())
129    
130     This callback is called when a connection has been successfully established.
131    
132 root 1.198 The peer's numeric host and port (the socket peername) are passed as
133 root 1.228 parameters, together with a retry callback. At the time it is called the
134     read and write queues, EOF status, TLS status and similar properties of
135     the handle will have been reset.
136    
137     It is not allowed to use the read or write queues while the handle object
138     is connecting.
139    
140     If, for some reason, the handle is not acceptable, calling C<$retry> will
141     continue with the next connection target (in case of multi-homed hosts or
142     SRV records there can be multiple connection endpoints). The C<$retry>
143     callback can be invoked after the connect callback returns, i.e. one can
144     start a handshake and then decide to retry with the next host if the
145     handshake fails.
146 root 1.159
147 root 1.198 In most cases, you should ignore the C<$retry> parameter.
148 root 1.158
149 root 1.159 =item on_connect_error => $cb->($handle, $message)
150 root 1.10
151 root 1.186 This callback is called when the connection could not be
152 root 1.159 established. C<$!> will contain the relevant error code, and C<$message> a
153     message describing it (usually the same as C<"$!">).
154 root 1.8
155 root 1.159 If this callback isn't specified, then C<on_error> will be called with a
156     fatal error instead.
157 root 1.82
158 root 1.159 =back
159 root 1.80
160 root 1.133 =item on_error => $cb->($handle, $fatal, $message)
161 root 1.10
162 root 1.52 This is the error callback, which is called when, well, some error
163     occured, such as not being able to resolve the hostname, failure to
164 root 1.198 connect, or a read error.
165 root 1.52
166     Some errors are fatal (which is indicated by C<$fatal> being true). On
167 root 1.149 fatal errors the handle object will be destroyed (by a call to C<< ->
168     destroy >>) after invoking the error callback (which means you are free to
169     examine the handle object). Examples of fatal errors are an EOF condition
170 root 1.204 with active (but unsatisfiable) read watchers (C<EPIPE>) or I/O errors. In
171 root 1.198 cases where the other side can close the connection at will, it is
172 root 1.159 often easiest to not report C<EPIPE> errors in this callback.
173 root 1.82
174 root 1.133 AnyEvent::Handle tries to find an appropriate error code for you to check
175 root 1.233 against, but in some cases (TLS errors), this does not work well.
176    
177     If you report the error to the user, it is recommended to always output
178     the C<$message> argument in human-readable error messages (you don't need
179     to report C<"$!"> if you report C<$message>).
180    
181     If you want to react programmatically to the error, then looking at C<$!>
182     and comparing it against some of the documented C<Errno> values is usually
183     better than looking at the C<$message>.
184 root 1.133
185 root 1.198 Non-fatal errors can be retried by returning, but it is recommended
186 root 1.82 to simply ignore this parameter and instead abondon the handle object
187     when this callback is invoked. Examples of non-fatal errors are timeouts
188     C<ETIMEDOUT>) or badly-formatted data (C<EBADMSG>).
189 root 1.8
190 root 1.198 On entry to the callback, the value of C<$!> contains the operating
191     system error code (or C<ENOSPC>, C<EPIPE>, C<ETIMEDOUT>, C<EBADMSG> or
192 root 1.133 C<EPROTO>).
193 root 1.8
194 root 1.10 While not mandatory, it is I<highly> recommended to set this callback, as
195 root 1.198 you will not be notified of errors otherwise. The default just calls
196 root 1.52 C<croak>.
197 root 1.8
198 root 1.40 =item on_read => $cb->($handle)
199 root 1.8
200     This sets the default read callback, which is called when data arrives
201 root 1.61 and no read request is in the queue (unlike read queue callbacks, this
202     callback will only be called when at least one octet of data is in the
203     read buffer).
204 root 1.8
205     To access (and remove data from) the read buffer, use the C<< ->rbuf >>
206 root 1.139 method or access the C<< $handle->{rbuf} >> member directly. Note that you
207 root 1.117 must not enlarge or modify the read buffer, you can only remove data at
208     the beginning from it.
209 root 1.8
210 root 1.197 You can also call C<< ->push_read (...) >> or any other function that
211     modifies the read queue. Or do both. Or ...
212    
213 root 1.198 When an EOF condition is detected, AnyEvent::Handle will first try to
214 root 1.8 feed all the remaining data to the queued callbacks and C<on_read> before
215     calling the C<on_eof> callback. If no progress can be made, then a fatal
216     error will be raised (with C<$!> set to C<EPIPE>).
217 elmex 1.1
218 root 1.150 Note that, unlike requests in the read queue, an C<on_read> callback
219     doesn't mean you I<require> some data: if there is an EOF and there
220     are outstanding read requests then an error will be flagged. With an
221     C<on_read> callback, the C<on_eof> callback will be invoked.
222    
223 root 1.159 =item on_eof => $cb->($handle)
224    
225     Set the callback to be called when an end-of-file condition is detected,
226     i.e. in the case of a socket, when the other side has closed the
227     connection cleanly, and there are no outstanding read requests in the
228     queue (if there are read requests, then an EOF counts as an unexpected
229     connection close and will be flagged as an error).
230    
231     For sockets, this just means that the other side has stopped sending data,
232     you can still try to write data, and, in fact, one can return from the EOF
233     callback and continue writing data, as only the read part has been shut
234     down.
235    
236     If an EOF condition has been detected but no C<on_eof> callback has been
237     set, then a fatal error will be raised with C<$!> set to <0>.
238    
239 root 1.40 =item on_drain => $cb->($handle)
240 elmex 1.1
241 root 1.229 This sets the callback that is called once when the write buffer becomes
242     empty (and immediately when the handle object is created).
243 elmex 1.1
244 root 1.8 To append to the write buffer, use the C<< ->push_write >> method.
245 elmex 1.2
246 root 1.69 This callback is useful when you don't want to put all of your write data
247     into the queue at once, for example, when you want to write the contents
248     of some file to the socket you might not want to read the whole file into
249     memory and push it into the queue, but instead only read more data from
250     the file when the write queue becomes empty.
251    
252 root 1.43 =item timeout => $fractional_seconds
253    
254 root 1.176 =item rtimeout => $fractional_seconds
255    
256     =item wtimeout => $fractional_seconds
257    
258     If non-zero, then these enables an "inactivity" timeout: whenever this
259     many seconds pass without a successful read or write on the underlying
260     file handle (or a call to C<timeout_reset>), the C<on_timeout> callback
261     will be invoked (and if that one is missing, a non-fatal C<ETIMEDOUT>
262     error will be raised).
263    
264 root 1.218 There are three variants of the timeouts that work independently of each
265     other, for both read and write (triggered when nothing was read I<OR>
266     written), just read (triggered when nothing was read), and just write:
267 root 1.176 C<timeout>, C<rtimeout> and C<wtimeout>, with corresponding callbacks
268     C<on_timeout>, C<on_rtimeout> and C<on_wtimeout>, and reset functions
269     C<timeout_reset>, C<rtimeout_reset>, and C<wtimeout_reset>.
270 root 1.43
271 root 1.218 Note that timeout processing is active even when you do not have any
272     outstanding read or write requests: If you plan to keep the connection
273     idle then you should disable the timeout temporarily or ignore the
274     timeout in the corresponding C<on_timeout> callback, in which case
275     AnyEvent::Handle will simply restart the timeout.
276 root 1.43
277 root 1.218 Zero (the default) disables the corresponding timeout.
278 root 1.43
279     =item on_timeout => $cb->($handle)
280    
281 root 1.218 =item on_rtimeout => $cb->($handle)
282    
283     =item on_wtimeout => $cb->($handle)
284    
285 root 1.43 Called whenever the inactivity timeout passes. If you return from this
286     callback, then the timeout will be reset as if some activity had happened,
287     so this condition is not fatal in any way.
288    
289 root 1.8 =item rbuf_max => <bytes>
290 elmex 1.2
291 root 1.8 If defined, then a fatal error will be raised (with C<$!> set to C<ENOSPC>)
292     when the read buffer ever (strictly) exceeds this size. This is useful to
293 root 1.88 avoid some forms of denial-of-service attacks.
294 elmex 1.2
295 root 1.8 For example, a server accepting connections from untrusted sources should
296     be configured to accept only so-and-so much data that it cannot act on
297     (for example, when expecting a line, an attacker could send an unlimited
298     amount of data without a callback ever being called as long as the line
299     isn't finished).
300 elmex 1.2
301 root 1.209 =item wbuf_max => <bytes>
302    
303     If defined, then a fatal error will be raised (with C<$!> set to C<ENOSPC>)
304     when the write buffer ever (strictly) exceeds this size. This is useful to
305     avoid some forms of denial-of-service attacks.
306    
307     Although the units of this parameter is bytes, this is the I<raw> number
308     of bytes not yet accepted by the kernel. This can make a difference when
309     you e.g. use TLS, as TLS typically makes your write data larger (but it
310     can also make it smaller due to compression).
311    
312     As an example of when this limit is useful, take a chat server that sends
313     chat messages to a client. If the client does not read those in a timely
314     manner then the send buffer in the server would grow unbounded.
315    
316 root 1.70 =item autocork => <boolean>
317    
318 root 1.198 When disabled (the default), C<push_write> will try to immediately
319     write the data to the handle if possible. This avoids having to register
320 root 1.88 a write watcher and wait for the next event loop iteration, but can
321     be inefficient if you write multiple small chunks (on the wire, this
322     disadvantage is usually avoided by your kernel's nagle algorithm, see
323     C<no_delay>, but this option can save costly syscalls).
324 root 1.70
325 root 1.198 When enabled, writes will always be queued till the next event loop
326 root 1.70 iteration. This is efficient when you do many small writes per iteration,
327 root 1.88 but less efficient when you do a single write only per iteration (or when
328     the write buffer often is full). It also increases write latency.
329 root 1.70
330     =item no_delay => <boolean>
331    
332     When doing small writes on sockets, your operating system kernel might
333     wait a bit for more data before actually sending it out. This is called
334     the Nagle algorithm, and usually it is beneficial.
335    
336 root 1.88 In some situations you want as low a delay as possible, which can be
337     accomplishd by setting this option to a true value.
338 root 1.70
339 root 1.198 The default is your operating system's default behaviour (most likely
340     enabled). This option explicitly enables or disables it, if possible.
341 root 1.70
342 root 1.182 =item keepalive => <boolean>
343    
344     Enables (default disable) the SO_KEEPALIVE option on the stream socket:
345     normally, TCP connections have no time-out once established, so TCP
346 root 1.186 connections, once established, can stay alive forever even when the other
347 root 1.182 side has long gone. TCP keepalives are a cheap way to take down long-lived
348 root 1.198 TCP connections when the other side becomes unreachable. While the default
349 root 1.182 is OS-dependent, TCP keepalives usually kick in after around two hours,
350     and, if the other side doesn't reply, take down the TCP connection some 10
351     to 15 minutes later.
352    
353     It is harmless to specify this option for file handles that do not support
354     keepalives, and enabling it on connections that are potentially long-lived
355     is usually a good idea.
356    
357     =item oobinline => <boolean>
358    
359     BSD majorly fucked up the implementation of TCP urgent data. The result
360     is that almost no OS implements TCP according to the specs, and every OS
361     implements it slightly differently.
362    
363 root 1.183 If you want to handle TCP urgent data, then setting this flag (the default
364     is enabled) gives you the most portable way of getting urgent data, by
365     putting it into the stream.
366    
367     Since BSD emulation of OOB data on top of TCP's urgent data can have
368     security implications, AnyEvent::Handle sets this flag automatically
369 root 1.184 unless explicitly specified. Note that setting this flag after
370     establishing a connection I<may> be a bit too late (data loss could
371     already have occured on BSD systems), but at least it will protect you
372     from most attacks.
373 root 1.182
374 root 1.8 =item read_size => <bytes>
375 elmex 1.2
376 root 1.221 The initial read block size, the number of bytes this module will try
377     to read during each loop iteration. Each handle object will consume
378     at least this amount of memory for the read buffer as well, so when
379     handling many connections watch out for memory requirements). See also
380     C<max_read_size>. Default: C<2048>.
381 root 1.203
382     =item max_read_size => <bytes>
383    
384     The maximum read buffer size used by the dynamic adjustment
385     algorithm: Each time AnyEvent::Handle can read C<read_size> bytes in
386     one go it will double C<read_size> up to the maximum given by this
387     option. Default: C<131072> or C<read_size>, whichever is higher.
388 root 1.8
389     =item low_water_mark => <bytes>
390    
391 root 1.198 Sets the number of bytes (default: C<0>) that make up an "empty" write
392     buffer: If the buffer reaches this size or gets even samller it is
393 root 1.8 considered empty.
394 elmex 1.2
395 root 1.88 Sometimes it can be beneficial (for performance reasons) to add data to
396     the write buffer before it is fully drained, but this is a rare case, as
397     the operating system kernel usually buffers data as well, so the default
398     is good in almost all cases.
399    
400 root 1.62 =item linger => <seconds>
401    
402 root 1.198 If this is non-zero (default: C<3600>), the destructor of the
403 root 1.88 AnyEvent::Handle object will check whether there is still outstanding
404     write data and will install a watcher that will write this data to the
405     socket. No errors will be reported (this mostly matches how the operating
406     system treats outstanding data at socket close time).
407 root 1.62
408 root 1.88 This will not work for partial TLS data that could not be encoded
409 root 1.93 yet. This data will be lost. Calling the C<stoptls> method in time might
410     help.
411 root 1.62
412 root 1.133 =item peername => $string
413    
414 root 1.134 A string used to identify the remote site - usually the DNS hostname
415     (I<not> IDN!) used to create the connection, rarely the IP address.
416 root 1.131
417 root 1.133 Apart from being useful in error messages, this string is also used in TLS
418 root 1.144 peername verification (see C<verify_peername> in L<AnyEvent::TLS>). This
419 root 1.198 verification will be skipped when C<peername> is not specified or is
420 root 1.144 C<undef>.
421 root 1.131
422 root 1.19 =item tls => "accept" | "connect" | Net::SSLeay::SSL object
423    
424 root 1.85 When this parameter is given, it enables TLS (SSL) mode, that means
425 root 1.186 AnyEvent will start a TLS handshake as soon as the connection has been
426 root 1.88 established and will transparently encrypt/decrypt data afterwards.
427 root 1.19
428 root 1.133 All TLS protocol errors will be signalled as C<EPROTO>, with an
429     appropriate error message.
430    
431 root 1.26 TLS mode requires Net::SSLeay to be installed (it will be loaded
432 root 1.88 automatically when you try to create a TLS handle): this module doesn't
433     have a dependency on that module, so if your module requires it, you have
434     to add the dependency yourself.
435 root 1.26
436 root 1.85 Unlike TCP, TLS has a server and client side: for the TLS server side, use
437     C<accept>, and for the TLS client side of a connection, use C<connect>
438     mode.
439 root 1.19
440     You can also provide your own TLS connection object, but you have
441     to make sure that you call either C<Net::SSLeay::set_connect_state>
442     or C<Net::SSLeay::set_accept_state> on it before you pass it to
443 root 1.131 AnyEvent::Handle. Also, this module will take ownership of this connection
444     object.
445    
446     At some future point, AnyEvent::Handle might switch to another TLS
447     implementation, then the option to use your own session object will go
448     away.
449 root 1.19
450 root 1.109 B<IMPORTANT:> since Net::SSLeay "objects" are really only integers,
451     passing in the wrong integer will lead to certain crash. This most often
452     happens when one uses a stylish C<< tls => 1 >> and is surprised about the
453     segmentation fault.
454    
455 root 1.198 Use the C<< ->starttls >> method if you need to start TLS negotiation later.
456 root 1.26
457 root 1.131 =item tls_ctx => $anyevent_tls
458 root 1.19
459 root 1.131 Use the given C<AnyEvent::TLS> object to create the new TLS connection
460 root 1.207 (unless a connection object was specified directly). If this
461     parameter is missing (or C<undef>), then AnyEvent::Handle will use
462     C<AnyEvent::Handle::TLS_CTX>.
463 root 1.19
464 root 1.131 Instead of an object, you can also specify a hash reference with C<< key
465     => value >> pairs. Those will be passed to L<AnyEvent::TLS> to create a
466     new TLS context object.
467    
468 root 1.143 =item on_starttls => $cb->($handle, $success[, $error_message])
469 root 1.142
470     This callback will be invoked when the TLS/SSL handshake has finished. If
471     C<$success> is true, then the TLS handshake succeeded, otherwise it failed
472     (C<on_stoptls> will not be called in this case).
473    
474     The session in C<< $handle->{tls} >> can still be examined in this
475     callback, even when the handshake was not successful.
476    
477 root 1.143 TLS handshake failures will not cause C<on_error> to be invoked when this
478     callback is in effect, instead, the error message will be passed to C<on_starttls>.
479    
480     Without this callback, handshake failures lead to C<on_error> being
481 root 1.198 called as usual.
482 root 1.143
483 root 1.198 Note that you cannot just call C<starttls> again in this callback. If you
484 root 1.143 need to do that, start an zero-second timer instead whose callback can
485     then call C<< ->starttls >> again.
486    
487 root 1.142 =item on_stoptls => $cb->($handle)
488    
489     When a SSLv3/TLS shutdown/close notify/EOF is detected and this callback is
490     set, then it will be invoked after freeing the TLS session. If it is not,
491     then a TLS shutdown condition will be treated like a normal EOF condition
492     on the handle.
493    
494     The session in C<< $handle->{tls} >> can still be examined in this
495     callback.
496    
497     This callback will only be called on TLS shutdowns, not when the
498     underlying handle signals EOF.
499    
500 root 1.40 =item json => JSON or JSON::XS object
501    
502     This is the json coder object used by the C<json> read and write types.
503    
504 root 1.41 If you don't supply it, then AnyEvent::Handle will create and use a
505 root 1.86 suitable one (on demand), which will write and expect UTF-8 encoded JSON
506     texts.
507 root 1.40
508     Note that you are responsible to depend on the JSON module if you want to
509     use this functionality, as AnyEvent does not have a dependency itself.
510    
511 elmex 1.1 =back
512    
513     =cut
514    
515     sub new {
516 root 1.8 my $class = shift;
517     my $self = bless { @_ }, $class;
518    
519 root 1.159 if ($self->{fh}) {
520     $self->_start;
521     return unless $self->{fh}; # could be gone by now
522    
523     } elsif ($self->{connect}) {
524     require AnyEvent::Socket;
525    
526     $self->{peername} = $self->{connect}[0]
527     unless exists $self->{peername};
528    
529     $self->{_skip_drain_rbuf} = 1;
530    
531     {
532     Scalar::Util::weaken (my $self = $self);
533    
534     $self->{_connect} =
535     AnyEvent::Socket::tcp_connect (
536     $self->{connect}[0],
537     $self->{connect}[1],
538     sub {
539     my ($fh, $host, $port, $retry) = @_;
540    
541 root 1.206 delete $self->{_connect}; # no longer needed
542 root 1.205
543 root 1.159 if ($fh) {
544     $self->{fh} = $fh;
545    
546     delete $self->{_skip_drain_rbuf};
547     $self->_start;
548    
549     $self->{on_connect}
550     and $self->{on_connect}($self, $host, $port, sub {
551 root 1.178 delete @$self{qw(fh _tw _rtw _wtw _ww _rw _eof _queue rbuf _wbuf tls _tls_rbuf _tls_wbuf)};
552 root 1.159 $self->{_skip_drain_rbuf} = 1;
553     &$retry;
554     });
555    
556     } else {
557     if ($self->{on_connect_error}) {
558     $self->{on_connect_error}($self, "$!");
559 root 1.217 $self->destroy if $self;
560 root 1.159 } else {
561 root 1.161 $self->_error ($!, 1);
562 root 1.159 }
563     }
564     },
565     sub {
566     local $self->{fh} = $_[0];
567    
568 root 1.161 $self->{on_prepare}
569 root 1.210 ? $self->{on_prepare}->($self)
570 root 1.161 : ()
571 root 1.159 }
572     );
573     }
574    
575     } else {
576     Carp::croak "AnyEvent::Handle: either an existing fh or the connect parameter must be specified";
577     }
578    
579     $self
580     }
581    
582     sub _start {
583     my ($self) = @_;
584 root 1.8
585 root 1.194 # too many clueless people try to use udp and similar sockets
586     # with AnyEvent::Handle, do them a favour.
587 root 1.195 my $type = getsockopt $self->{fh}, Socket::SOL_SOCKET (), Socket::SO_TYPE ();
588     Carp::croak "AnyEvent::Handle: only stream sockets supported, anything else will NOT work!"
589 root 1.196 if Socket::SOCK_STREAM () != (unpack "I", $type) && defined $type;
590 root 1.194
591 root 1.8 AnyEvent::Util::fh_nonblocking $self->{fh}, 1;
592 elmex 1.1
593 root 1.176 $self->{_activity} =
594     $self->{_ractivity} =
595     $self->{_wactivity} = AE::now;
596    
597 root 1.203 $self->{read_size} ||= 2048;
598     $self->{max_read_size} = $self->{read_size}
599     if $self->{read_size} > ($self->{max_read_size} || MAX_READ_SIZE);
600    
601 root 1.182 $self->timeout (delete $self->{timeout} ) if $self->{timeout};
602     $self->rtimeout (delete $self->{rtimeout} ) if $self->{rtimeout};
603     $self->wtimeout (delete $self->{wtimeout} ) if $self->{wtimeout};
604    
605 root 1.183 $self->no_delay (delete $self->{no_delay} ) if exists $self->{no_delay} && $self->{no_delay};
606     $self->keepalive (delete $self->{keepalive}) if exists $self->{keepalive} && $self->{keepalive};
607    
608     $self->oobinline (exists $self->{oobinline} ? delete $self->{oobinline} : 1);
609 root 1.131
610 root 1.182 $self->starttls (delete $self->{tls}, delete $self->{tls_ctx})
611 root 1.94 if $self->{tls};
612 root 1.19
613 root 1.199 $self->on_drain (delete $self->{on_drain} ) if $self->{on_drain};
614 root 1.10
615 root 1.66 $self->start_read
616 root 1.159 if $self->{on_read} || @{ $self->{_queue} };
617 root 1.160
618     $self->_drain_wbuf;
619 root 1.8 }
620 elmex 1.2
621 root 1.52 sub _error {
622 root 1.133 my ($self, $errno, $fatal, $message) = @_;
623 root 1.8
624 root 1.52 $! = $errno;
625 root 1.133 $message ||= "$!";
626 root 1.37
627 root 1.52 if ($self->{on_error}) {
628 root 1.133 $self->{on_error}($self, $fatal, $message);
629 root 1.151 $self->destroy if $fatal;
630 root 1.187 } elsif ($self->{fh} || $self->{connect}) {
631 root 1.149 $self->destroy;
632 root 1.133 Carp::croak "AnyEvent::Handle uncaught error: $message";
633 root 1.52 }
634 elmex 1.1 }
635    
636 root 1.8 =item $fh = $handle->fh
637 elmex 1.1
638 root 1.88 This method returns the file handle used to create the L<AnyEvent::Handle> object.
639 elmex 1.1
640     =cut
641    
642 root 1.38 sub fh { $_[0]{fh} }
643 elmex 1.1
644 root 1.8 =item $handle->on_error ($cb)
645 elmex 1.1
646 root 1.8 Replace the current C<on_error> callback (see the C<on_error> constructor argument).
647 elmex 1.1
648 root 1.8 =cut
649    
650     sub on_error {
651     $_[0]{on_error} = $_[1];
652     }
653    
654     =item $handle->on_eof ($cb)
655    
656     Replace the current C<on_eof> callback (see the C<on_eof> constructor argument).
657 elmex 1.1
658     =cut
659    
660 root 1.8 sub on_eof {
661     $_[0]{on_eof} = $_[1];
662     }
663    
664 root 1.43 =item $handle->on_timeout ($cb)
665    
666 root 1.176 =item $handle->on_rtimeout ($cb)
667    
668     =item $handle->on_wtimeout ($cb)
669    
670     Replace the current C<on_timeout>, C<on_rtimeout> or C<on_wtimeout>
671     callback, or disables the callback (but not the timeout) if C<$cb> =
672     C<undef>. See the C<timeout> constructor argument and method.
673 root 1.43
674     =cut
675    
676 root 1.176 # see below
677 root 1.43
678 root 1.70 =item $handle->autocork ($boolean)
679    
680     Enables or disables the current autocork behaviour (see C<autocork>
681 root 1.105 constructor argument). Changes will only take effect on the next write.
682 root 1.70
683     =cut
684    
685 root 1.105 sub autocork {
686     $_[0]{autocork} = $_[1];
687     }
688    
689 root 1.70 =item $handle->no_delay ($boolean)
690    
691     Enables or disables the C<no_delay> setting (see constructor argument of
692     the same name for details).
693    
694     =cut
695    
696     sub no_delay {
697     $_[0]{no_delay} = $_[1];
698    
699 root 1.200 setsockopt $_[0]{fh}, Socket::IPPROTO_TCP (), Socket::TCP_NODELAY (), int $_[1]
700     if $_[0]{fh};
701 root 1.182 }
702    
703     =item $handle->keepalive ($boolean)
704    
705     Enables or disables the C<keepalive> setting (see constructor argument of
706     the same name for details).
707    
708     =cut
709    
710     sub keepalive {
711     $_[0]{keepalive} = $_[1];
712    
713     eval {
714     local $SIG{__DIE__};
715     setsockopt $_[0]{fh}, Socket::SOL_SOCKET (), Socket::SO_KEEPALIVE (), int $_[1]
716     if $_[0]{fh};
717     };
718     }
719    
720     =item $handle->oobinline ($boolean)
721    
722     Enables or disables the C<oobinline> setting (see constructor argument of
723     the same name for details).
724    
725     =cut
726    
727     sub oobinline {
728     $_[0]{oobinline} = $_[1];
729    
730     eval {
731     local $SIG{__DIE__};
732     setsockopt $_[0]{fh}, Socket::SOL_SOCKET (), Socket::SO_OOBINLINE (), int $_[1]
733     if $_[0]{fh};
734     };
735     }
736    
737     =item $handle->keepalive ($boolean)
738    
739     Enables or disables the C<keepalive> setting (see constructor argument of
740     the same name for details).
741    
742     =cut
743    
744     sub keepalive {
745     $_[0]{keepalive} = $_[1];
746    
747     eval {
748     local $SIG{__DIE__};
749     setsockopt $_[0]{fh}, Socket::SOL_SOCKET (), Socket::SO_KEEPALIVE (), int $_[1]
750 root 1.159 if $_[0]{fh};
751 root 1.70 };
752     }
753    
754 root 1.142 =item $handle->on_starttls ($cb)
755    
756     Replace the current C<on_starttls> callback (see the C<on_starttls> constructor argument).
757    
758     =cut
759    
760     sub on_starttls {
761     $_[0]{on_starttls} = $_[1];
762     }
763    
764     =item $handle->on_stoptls ($cb)
765    
766     Replace the current C<on_stoptls> callback (see the C<on_stoptls> constructor argument).
767    
768     =cut
769    
770 root 1.189 sub on_stoptls {
771 root 1.142 $_[0]{on_stoptls} = $_[1];
772     }
773    
774 root 1.168 =item $handle->rbuf_max ($max_octets)
775    
776     Configures the C<rbuf_max> setting (C<undef> disables it).
777    
778 root 1.209 =item $handle->wbuf_max ($max_octets)
779    
780     Configures the C<wbuf_max> setting (C<undef> disables it).
781    
782 root 1.168 =cut
783    
784     sub rbuf_max {
785     $_[0]{rbuf_max} = $_[1];
786     }
787    
788 root 1.215 sub wbuf_max {
789 root 1.209 $_[0]{wbuf_max} = $_[1];
790     }
791    
792 root 1.43 #############################################################################
793    
794     =item $handle->timeout ($seconds)
795    
796 root 1.176 =item $handle->rtimeout ($seconds)
797    
798     =item $handle->wtimeout ($seconds)
799    
800 root 1.43 Configures (or disables) the inactivity timeout.
801    
802 root 1.218 The timeout will be checked instantly, so this method might destroy the
803     handle before it returns.
804    
805 root 1.176 =item $handle->timeout_reset
806    
807     =item $handle->rtimeout_reset
808    
809     =item $handle->wtimeout_reset
810    
811     Reset the activity timeout, as if data was received or sent.
812    
813     These methods are cheap to call.
814    
815 root 1.43 =cut
816    
817 root 1.176 for my $dir ("", "r", "w") {
818     my $timeout = "${dir}timeout";
819     my $tw = "_${dir}tw";
820     my $on_timeout = "on_${dir}timeout";
821     my $activity = "_${dir}activity";
822     my $cb;
823    
824     *$on_timeout = sub {
825     $_[0]{$on_timeout} = $_[1];
826     };
827    
828     *$timeout = sub {
829     my ($self, $new_value) = @_;
830 root 1.43
831 root 1.201 $new_value >= 0
832     or Carp::croak "AnyEvent::Handle->$timeout called with negative timeout ($new_value), caught";
833    
834 root 1.176 $self->{$timeout} = $new_value;
835     delete $self->{$tw}; &$cb;
836     };
837 root 1.43
838 root 1.176 *{"${dir}timeout_reset"} = sub {
839     $_[0]{$activity} = AE::now;
840     };
841 root 1.43
842 root 1.176 # main workhorse:
843     # reset the timeout watcher, as neccessary
844     # also check for time-outs
845     $cb = sub {
846     my ($self) = @_;
847    
848     if ($self->{$timeout} && $self->{fh}) {
849     my $NOW = AE::now;
850    
851     # when would the timeout trigger?
852     my $after = $self->{$activity} + $self->{$timeout} - $NOW;
853    
854     # now or in the past already?
855     if ($after <= 0) {
856     $self->{$activity} = $NOW;
857 root 1.43
858 root 1.176 if ($self->{$on_timeout}) {
859     $self->{$on_timeout}($self);
860     } else {
861     $self->_error (Errno::ETIMEDOUT);
862     }
863 root 1.43
864 root 1.176 # callback could have changed timeout value, optimise
865     return unless $self->{$timeout};
866 root 1.43
867 root 1.176 # calculate new after
868     $after = $self->{$timeout};
869 root 1.43 }
870    
871 root 1.176 Scalar::Util::weaken $self;
872     return unless $self; # ->error could have destroyed $self
873 root 1.43
874 root 1.176 $self->{$tw} ||= AE::timer $after, 0, sub {
875     delete $self->{$tw};
876     $cb->($self);
877     };
878     } else {
879     delete $self->{$tw};
880 root 1.43 }
881     }
882     }
883    
884 root 1.9 #############################################################################
885    
886     =back
887    
888     =head2 WRITE QUEUE
889    
890     AnyEvent::Handle manages two queues per handle, one for writing and one
891     for reading.
892    
893     The write queue is very simple: you can add data to its end, and
894     AnyEvent::Handle will automatically try to get rid of it for you.
895    
896 elmex 1.20 When data could be written and the write buffer is shorter then the low
897 root 1.229 water mark, the C<on_drain> callback will be invoked once.
898 root 1.9
899     =over 4
900    
901 root 1.8 =item $handle->on_drain ($cb)
902    
903     Sets the C<on_drain> callback or clears it (see the description of
904     C<on_drain> in the constructor).
905    
906 root 1.193 This method may invoke callbacks (and therefore the handle might be
907     destroyed after it returns).
908    
909 root 1.8 =cut
910    
911     sub on_drain {
912 elmex 1.1 my ($self, $cb) = @_;
913    
914 root 1.8 $self->{on_drain} = $cb;
915    
916     $cb->($self)
917 root 1.93 if $cb && $self->{low_water_mark} >= (length $self->{wbuf}) + (length $self->{_tls_wbuf});
918 root 1.8 }
919    
920     =item $handle->push_write ($data)
921    
922 root 1.209 Queues the given scalar to be written. You can push as much data as
923     you want (only limited by the available memory and C<wbuf_max>), as
924     C<AnyEvent::Handle> buffers it independently of the kernel.
925 root 1.8
926 root 1.193 This method may invoke callbacks (and therefore the handle might be
927     destroyed after it returns).
928    
929 root 1.8 =cut
930    
931 root 1.17 sub _drain_wbuf {
932     my ($self) = @_;
933 root 1.8
934 root 1.38 if (!$self->{_ww} && length $self->{wbuf}) {
935 root 1.35
936 root 1.8 Scalar::Util::weaken $self;
937 root 1.35
938 root 1.8 my $cb = sub {
939     my $len = syswrite $self->{fh}, $self->{wbuf};
940    
941 root 1.146 if (defined $len) {
942 root 1.8 substr $self->{wbuf}, 0, $len, "";
943    
944 root 1.176 $self->{_activity} = $self->{_wactivity} = AE::now;
945 root 1.43
946 root 1.8 $self->{on_drain}($self)
947 root 1.93 if $self->{low_water_mark} >= (length $self->{wbuf}) + (length $self->{_tls_wbuf})
948 root 1.8 && $self->{on_drain};
949    
950 root 1.38 delete $self->{_ww} unless length $self->{wbuf};
951 root 1.42 } elsif ($! != EAGAIN && $! != EINTR && $! != WSAEWOULDBLOCK) {
952 root 1.52 $self->_error ($!, 1);
953 elmex 1.1 }
954 root 1.8 };
955    
956 root 1.35 # try to write data immediately
957 root 1.70 $cb->() unless $self->{autocork};
958 root 1.8
959 root 1.35 # if still data left in wbuf, we need to poll
960 root 1.175 $self->{_ww} = AE::io $self->{fh}, 1, $cb
961 root 1.35 if length $self->{wbuf};
962 root 1.209
963     if (
964     defined $self->{wbuf_max}
965     && $self->{wbuf_max} < length $self->{wbuf}
966     ) {
967     $self->_error (Errno::ENOSPC, 1), return;
968     }
969 root 1.8 };
970     }
971    
972 root 1.30 our %WH;
973    
974 root 1.185 # deprecated
975 root 1.30 sub register_write_type($$) {
976     $WH{$_[0]} = $_[1];
977     }
978    
979 root 1.17 sub push_write {
980     my $self = shift;
981    
982 root 1.29 if (@_ > 1) {
983     my $type = shift;
984    
985 root 1.185 @_ = ($WH{$type} ||= _load_func "$type\::anyevent_write_type"
986     or Carp::croak "unsupported/unloadable type '$type' passed to AnyEvent::Handle::push_write")
987 root 1.29 ->($self, @_);
988     }
989    
990 root 1.190 # we downgrade here to avoid hard-to-track-down bugs,
991     # and diagnose the problem earlier and better.
992    
993 root 1.93 if ($self->{tls}) {
994 root 1.190 utf8::downgrade $self->{_tls_wbuf} .= $_[0];
995 root 1.160 &_dotls ($self) if $self->{fh};
996 root 1.17 } else {
997 root 1.190 utf8::downgrade $self->{wbuf} .= $_[0];
998 root 1.159 $self->_drain_wbuf if $self->{fh};
999 root 1.17 }
1000     }
1001    
1002 root 1.29 =item $handle->push_write (type => @args)
1003    
1004 root 1.185 Instead of formatting your data yourself, you can also let this module
1005     do the job by specifying a type and type-specific arguments. You
1006     can also specify the (fully qualified) name of a package, in which
1007     case AnyEvent tries to load the package and then expects to find the
1008 root 1.197 C<anyevent_write_type> function inside (see "custom write types", below).
1009 root 1.29
1010 root 1.30 Predefined types are (if you have ideas for additional types, feel free to
1011     drop by and tell us):
1012 root 1.29
1013     =over 4
1014    
1015     =item netstring => $string
1016    
1017     Formats the given value as netstring
1018     (http://cr.yp.to/proto/netstrings.txt, this is not a recommendation to use them).
1019    
1020     =cut
1021    
1022     register_write_type netstring => sub {
1023     my ($self, $string) = @_;
1024    
1025 root 1.96 (length $string) . ":$string,"
1026 root 1.29 };
1027    
1028 root 1.61 =item packstring => $format, $data
1029    
1030     An octet string prefixed with an encoded length. The encoding C<$format>
1031     uses the same format as a Perl C<pack> format, but must specify a single
1032     integer only (only one of C<cCsSlLqQiInNvVjJw> is allowed, plus an
1033     optional C<!>, C<< < >> or C<< > >> modifier).
1034    
1035     =cut
1036    
1037     register_write_type packstring => sub {
1038     my ($self, $format, $string) = @_;
1039    
1040 root 1.65 pack "$format/a*", $string
1041 root 1.61 };
1042    
1043 root 1.39 =item json => $array_or_hashref
1044    
1045 root 1.40 Encodes the given hash or array reference into a JSON object. Unless you
1046     provide your own JSON object, this means it will be encoded to JSON text
1047     in UTF-8.
1048    
1049     JSON objects (and arrays) are self-delimiting, so you can write JSON at
1050     one end of a handle and read them at the other end without using any
1051     additional framing.
1052    
1053 root 1.41 The generated JSON text is guaranteed not to contain any newlines: While
1054     this module doesn't need delimiters after or between JSON texts to be
1055     able to read them, many other languages depend on that.
1056    
1057     A simple RPC protocol that interoperates easily with others is to send
1058     JSON arrays (or objects, although arrays are usually the better choice as
1059     they mimic how function argument passing works) and a newline after each
1060     JSON text:
1061    
1062     $handle->push_write (json => ["method", "arg1", "arg2"]); # whatever
1063     $handle->push_write ("\012");
1064    
1065     An AnyEvent::Handle receiver would simply use the C<json> read type and
1066     rely on the fact that the newline will be skipped as leading whitespace:
1067    
1068     $handle->push_read (json => sub { my $array = $_[1]; ... });
1069    
1070     Other languages could read single lines terminated by a newline and pass
1071     this line into their JSON decoder of choice.
1072    
1073 root 1.40 =cut
1074    
1075 root 1.179 sub json_coder() {
1076     eval { require JSON::XS; JSON::XS->new->utf8 }
1077     || do { require JSON; JSON->new->utf8 }
1078     }
1079    
1080 root 1.40 register_write_type json => sub {
1081     my ($self, $ref) = @_;
1082    
1083 root 1.179 my $json = $self->{json} ||= json_coder;
1084 root 1.40
1085 root 1.179 $json->encode ($ref)
1086 root 1.40 };
1087    
1088 root 1.63 =item storable => $reference
1089    
1090     Freezes the given reference using L<Storable> and writes it to the
1091     handle. Uses the C<nfreeze> format.
1092    
1093     =cut
1094    
1095     register_write_type storable => sub {
1096     my ($self, $ref) = @_;
1097    
1098 root 1.224 require Storable unless $Storable::VERSION;
1099 root 1.63
1100 root 1.65 pack "w/a*", Storable::nfreeze ($ref)
1101 root 1.63 };
1102    
1103 root 1.53 =back
1104    
1105 root 1.133 =item $handle->push_shutdown
1106    
1107     Sometimes you know you want to close the socket after writing your data
1108     before it was actually written. One way to do that is to replace your
1109 root 1.142 C<on_drain> handler by a callback that shuts down the socket (and set
1110     C<low_water_mark> to C<0>). This method is a shorthand for just that, and
1111     replaces the C<on_drain> callback with:
1112 root 1.133
1113 root 1.214 sub { shutdown $_[0]{fh}, 1 }
1114 root 1.133
1115     This simply shuts down the write side and signals an EOF condition to the
1116     the peer.
1117    
1118     You can rely on the normal read queue and C<on_eof> handling
1119     afterwards. This is the cleanest way to close a connection.
1120    
1121 root 1.193 This method may invoke callbacks (and therefore the handle might be
1122     destroyed after it returns).
1123    
1124 root 1.133 =cut
1125    
1126     sub push_shutdown {
1127 root 1.142 my ($self) = @_;
1128    
1129     delete $self->{low_water_mark};
1130     $self->on_drain (sub { shutdown $_[0]{fh}, 1 });
1131 root 1.133 }
1132    
1133 root 1.185 =item custom write types - Package::anyevent_write_type $handle, @args
1134    
1135     Instead of one of the predefined types, you can also specify the name of
1136     a package. AnyEvent will try to load the package and then expects to find
1137     a function named C<anyevent_write_type> inside. If it isn't found, it
1138     progressively tries to load the parent package until it either finds the
1139     function (good) or runs out of packages (bad).
1140    
1141     Whenever the given C<type> is used, C<push_write> will the function with
1142     the handle object and the remaining arguments.
1143    
1144     The function is supposed to return a single octet string that will be
1145 root 1.223 appended to the write buffer, so you can mentally treat this function as a
1146 root 1.185 "arguments to on-the-wire-format" converter.
1147 root 1.30
1148 root 1.185 Example: implement a custom write type C<join> that joins the remaining
1149     arguments using the first one.
1150 root 1.29
1151 root 1.185 $handle->push_write (My::Type => " ", 1,2,3);
1152 root 1.29
1153 root 1.185 # uses the following package, which can be defined in the "My::Type" or in
1154     # the "My" modules to be auto-loaded, or just about anywhere when the
1155     # My::Type::anyevent_write_type is defined before invoking it.
1156    
1157     package My::Type;
1158    
1159     sub anyevent_write_type {
1160     my ($handle, $delim, @args) = @_;
1161    
1162     join $delim, @args
1163     }
1164 root 1.29
1165 root 1.30 =cut
1166 root 1.29
1167 root 1.8 #############################################################################
1168    
1169 root 1.9 =back
1170    
1171     =head2 READ QUEUE
1172    
1173     AnyEvent::Handle manages two queues per handle, one for writing and one
1174     for reading.
1175    
1176     The read queue is more complex than the write queue. It can be used in two
1177     ways, the "simple" way, using only C<on_read> and the "complex" way, using
1178     a queue.
1179    
1180     In the simple case, you just install an C<on_read> callback and whenever
1181     new data arrives, it will be called. You can then remove some data (if
1182 root 1.197 enough is there) from the read buffer (C<< $handle->rbuf >>). Or you can
1183 root 1.69 leave the data there if you want to accumulate more (e.g. when only a
1184 root 1.197 partial message has been received so far), or change the read queue with
1185     e.g. C<push_read>.
1186 root 1.9
1187     In the more complex case, you want to queue multiple callbacks. In this
1188     case, AnyEvent::Handle will call the first queued callback each time new
1189 root 1.198 data arrives (also the first time it is queued) and remove it when it has
1190 root 1.61 done its job (see C<push_read>, below).
1191 root 1.9
1192     This way you can, for example, push three line-reads, followed by reading
1193     a chunk of data, and AnyEvent::Handle will execute them in order.
1194    
1195     Example 1: EPP protocol parser. EPP sends 4 byte length info, followed by
1196     the specified number of bytes which give an XML datagram.
1197    
1198     # in the default state, expect some header bytes
1199     $handle->on_read (sub {
1200     # some data is here, now queue the length-header-read (4 octets)
1201 root 1.52 shift->unshift_read (chunk => 4, sub {
1202 root 1.9 # header arrived, decode
1203     my $len = unpack "N", $_[1];
1204    
1205     # now read the payload
1206 root 1.52 shift->unshift_read (chunk => $len, sub {
1207 root 1.9 my $xml = $_[1];
1208     # handle xml
1209     });
1210     });
1211     });
1212    
1213 root 1.69 Example 2: Implement a client for a protocol that replies either with "OK"
1214     and another line or "ERROR" for the first request that is sent, and 64
1215     bytes for the second request. Due to the availability of a queue, we can
1216     just pipeline sending both requests and manipulate the queue as necessary
1217     in the callbacks.
1218    
1219     When the first callback is called and sees an "OK" response, it will
1220     C<unshift> another line-read. This line-read will be queued I<before> the
1221     64-byte chunk callback.
1222 root 1.9
1223 root 1.69 # request one, returns either "OK + extra line" or "ERROR"
1224 root 1.9 $handle->push_write ("request 1\015\012");
1225    
1226     # we expect "ERROR" or "OK" as response, so push a line read
1227 root 1.52 $handle->push_read (line => sub {
1228 root 1.9 # if we got an "OK", we have to _prepend_ another line,
1229     # so it will be read before the second request reads its 64 bytes
1230     # which are already in the queue when this callback is called
1231     # we don't do this in case we got an error
1232     if ($_[1] eq "OK") {
1233 root 1.52 $_[0]->unshift_read (line => sub {
1234 root 1.9 my $response = $_[1];
1235     ...
1236     });
1237     }
1238     });
1239    
1240 root 1.69 # request two, simply returns 64 octets
1241 root 1.9 $handle->push_write ("request 2\015\012");
1242    
1243     # simply read 64 bytes, always
1244 root 1.52 $handle->push_read (chunk => 64, sub {
1245 root 1.9 my $response = $_[1];
1246     ...
1247     });
1248    
1249     =over 4
1250    
1251 root 1.10 =cut
1252    
1253 root 1.8 sub _drain_rbuf {
1254     my ($self) = @_;
1255 elmex 1.1
1256 root 1.159 # avoid recursion
1257 root 1.167 return if $self->{_skip_drain_rbuf};
1258 root 1.159 local $self->{_skip_drain_rbuf} = 1;
1259 root 1.59
1260     while () {
1261 root 1.117 # we need to use a separate tls read buffer, as we must not receive data while
1262     # we are draining the buffer, and this can only happen with TLS.
1263 root 1.163 $self->{rbuf} .= delete $self->{_tls_rbuf}
1264     if exists $self->{_tls_rbuf};
1265 root 1.115
1266 root 1.59 my $len = length $self->{rbuf};
1267 elmex 1.1
1268 root 1.38 if (my $cb = shift @{ $self->{_queue} }) {
1269 root 1.29 unless ($cb->($self)) {
1270 root 1.163 # no progress can be made
1271     # (not enough data and no data forthcoming)
1272     $self->_error (Errno::EPIPE, 1), return
1273     if $self->{_eof};
1274 root 1.10
1275 root 1.38 unshift @{ $self->{_queue} }, $cb;
1276 root 1.55 last;
1277 root 1.8 }
1278     } elsif ($self->{on_read}) {
1279 root 1.61 last unless $len;
1280    
1281 root 1.8 $self->{on_read}($self);
1282    
1283     if (
1284 root 1.55 $len == length $self->{rbuf} # if no data has been consumed
1285     && !@{ $self->{_queue} } # and the queue is still empty
1286     && $self->{on_read} # but we still have on_read
1287 root 1.8 ) {
1288 root 1.55 # no further data will arrive
1289     # so no progress can be made
1290 root 1.150 $self->_error (Errno::EPIPE, 1), return
1291 root 1.55 if $self->{_eof};
1292    
1293     last; # more data might arrive
1294 elmex 1.1 }
1295 root 1.8 } else {
1296     # read side becomes idle
1297 root 1.93 delete $self->{_rw} unless $self->{tls};
1298 root 1.55 last;
1299 root 1.8 }
1300     }
1301    
1302 root 1.80 if ($self->{_eof}) {
1303 root 1.163 $self->{on_eof}
1304     ? $self->{on_eof}($self)
1305     : $self->_error (0, 1, "Unexpected end-of-file");
1306    
1307     return;
1308 root 1.80 }
1309 root 1.55
1310 root 1.169 if (
1311     defined $self->{rbuf_max}
1312     && $self->{rbuf_max} < length $self->{rbuf}
1313     ) {
1314     $self->_error (Errno::ENOSPC, 1), return;
1315     }
1316    
1317 root 1.55 # may need to restart read watcher
1318     unless ($self->{_rw}) {
1319     $self->start_read
1320     if $self->{on_read} || @{ $self->{_queue} };
1321     }
1322 elmex 1.1 }
1323    
1324 root 1.8 =item $handle->on_read ($cb)
1325 elmex 1.1
1326 root 1.8 This replaces the currently set C<on_read> callback, or clears it (when
1327     the new callback is C<undef>). See the description of C<on_read> in the
1328     constructor.
1329 elmex 1.1
1330 root 1.193 This method may invoke callbacks (and therefore the handle might be
1331     destroyed after it returns).
1332    
1333 root 1.8 =cut
1334    
1335     sub on_read {
1336     my ($self, $cb) = @_;
1337 elmex 1.1
1338 root 1.8 $self->{on_read} = $cb;
1339 root 1.159 $self->_drain_rbuf if $cb;
1340 elmex 1.1 }
1341    
1342 root 1.8 =item $handle->rbuf
1343    
1344 root 1.199 Returns the read buffer (as a modifiable lvalue). You can also access the
1345     read buffer directly as the C<< ->{rbuf} >> member, if you want (this is
1346     much faster, and no less clean).
1347    
1348     The only operation allowed on the read buffer (apart from looking at it)
1349     is removing data from its beginning. Otherwise modifying or appending to
1350     it is not allowed and will lead to hard-to-track-down bugs.
1351    
1352     NOTE: The read buffer should only be used or modified in the C<on_read>
1353     callback or when C<push_read> or C<unshift_read> are used with a single
1354     callback (i.e. untyped). Typed C<push_read> and C<unshift_read> methods
1355     will manage the read buffer on their own.
1356 elmex 1.1
1357     =cut
1358    
1359 elmex 1.2 sub rbuf : lvalue {
1360 root 1.8 $_[0]{rbuf}
1361 elmex 1.2 }
1362 elmex 1.1
1363 root 1.8 =item $handle->push_read ($cb)
1364    
1365     =item $handle->unshift_read ($cb)
1366    
1367     Append the given callback to the end of the queue (C<push_read>) or
1368     prepend it (C<unshift_read>).
1369    
1370     The callback is called each time some additional read data arrives.
1371 elmex 1.1
1372 elmex 1.20 It must check whether enough data is in the read buffer already.
1373 elmex 1.1
1374 root 1.8 If not enough data is available, it must return the empty list or a false
1375     value, in which case it will be called repeatedly until enough data is
1376     available (or an error condition is detected).
1377    
1378     If enough data was available, then the callback must remove all data it is
1379     interested in (which can be none at all) and return a true value. After returning
1380     true, it will be removed from the queue.
1381 elmex 1.1
1382 root 1.193 These methods may invoke callbacks (and therefore the handle might be
1383     destroyed after it returns).
1384    
1385 elmex 1.1 =cut
1386    
1387 root 1.30 our %RH;
1388    
1389     sub register_read_type($$) {
1390     $RH{$_[0]} = $_[1];
1391     }
1392    
1393 root 1.8 sub push_read {
1394 root 1.28 my $self = shift;
1395     my $cb = pop;
1396    
1397     if (@_) {
1398     my $type = shift;
1399    
1400 root 1.185 $cb = ($RH{$type} ||= _load_func "$type\::anyevent_read_type"
1401     or Carp::croak "unsupported/unloadable type '$type' passed to AnyEvent::Handle::push_read")
1402 root 1.28 ->($self, $cb, @_);
1403     }
1404 elmex 1.1
1405 root 1.38 push @{ $self->{_queue} }, $cb;
1406 root 1.159 $self->_drain_rbuf;
1407 elmex 1.1 }
1408    
1409 root 1.8 sub unshift_read {
1410 root 1.28 my $self = shift;
1411     my $cb = pop;
1412    
1413     if (@_) {
1414     my $type = shift;
1415    
1416 root 1.199 $cb = ($RH{$type} ||= _load_func "$type\::anyevent_read_type"
1417     or Carp::croak "unsupported/unloadable type '$type' passed to AnyEvent::Handle::unshift_read")
1418 root 1.28 ->($self, $cb, @_);
1419     }
1420    
1421 root 1.38 unshift @{ $self->{_queue} }, $cb;
1422 root 1.159 $self->_drain_rbuf;
1423 root 1.8 }
1424 elmex 1.1
1425 root 1.28 =item $handle->push_read (type => @args, $cb)
1426 elmex 1.1
1427 root 1.28 =item $handle->unshift_read (type => @args, $cb)
1428 elmex 1.1
1429 root 1.28 Instead of providing a callback that parses the data itself you can chose
1430     between a number of predefined parsing formats, for chunks of data, lines
1431 root 1.185 etc. You can also specify the (fully qualified) name of a package, in
1432     which case AnyEvent tries to load the package and then expects to find the
1433     C<anyevent_read_type> function inside (see "custom read types", below).
1434 elmex 1.1
1435 root 1.30 Predefined types are (if you have ideas for additional types, feel free to
1436     drop by and tell us):
1437 root 1.28
1438     =over 4
1439    
1440 root 1.40 =item chunk => $octets, $cb->($handle, $data)
1441 root 1.28
1442     Invoke the callback only once C<$octets> bytes have been read. Pass the
1443     data read to the callback. The callback will never be called with less
1444     data.
1445    
1446     Example: read 2 bytes.
1447    
1448     $handle->push_read (chunk => 2, sub {
1449 root 1.225 say "yay " . unpack "H*", $_[1];
1450 root 1.28 });
1451 elmex 1.1
1452     =cut
1453    
1454 root 1.28 register_read_type chunk => sub {
1455     my ($self, $cb, $len) = @_;
1456 elmex 1.1
1457 root 1.8 sub {
1458     $len <= length $_[0]{rbuf} or return;
1459 elmex 1.12 $cb->($_[0], substr $_[0]{rbuf}, 0, $len, "");
1460 root 1.8 1
1461     }
1462 root 1.28 };
1463 root 1.8
1464 root 1.40 =item line => [$eol, ]$cb->($handle, $line, $eol)
1465 elmex 1.1
1466 root 1.8 The callback will be called only once a full line (including the end of
1467     line marker, C<$eol>) has been read. This line (excluding the end of line
1468     marker) will be passed to the callback as second argument (C<$line>), and
1469     the end of line marker as the third argument (C<$eol>).
1470 elmex 1.1
1471 root 1.8 The end of line marker, C<$eol>, can be either a string, in which case it
1472     will be interpreted as a fixed record end marker, or it can be a regex
1473     object (e.g. created by C<qr>), in which case it is interpreted as a
1474     regular expression.
1475 elmex 1.1
1476 root 1.8 The end of line marker argument C<$eol> is optional, if it is missing (NOT
1477     undef), then C<qr|\015?\012|> is used (which is good for most internet
1478     protocols).
1479 elmex 1.1
1480 root 1.8 Partial lines at the end of the stream will never be returned, as they are
1481     not marked by the end of line marker.
1482 elmex 1.1
1483 root 1.8 =cut
1484 elmex 1.1
1485 root 1.28 register_read_type line => sub {
1486     my ($self, $cb, $eol) = @_;
1487 elmex 1.1
1488 root 1.76 if (@_ < 3) {
1489     # this is more than twice as fast as the generic code below
1490     sub {
1491     $_[0]{rbuf} =~ s/^([^\015\012]*)(\015?\012)// or return;
1492 elmex 1.1
1493 root 1.227 $cb->($_[0], "$1", "$2");
1494 root 1.76 1
1495     }
1496     } else {
1497     $eol = quotemeta $eol unless ref $eol;
1498     $eol = qr|^(.*?)($eol)|s;
1499    
1500     sub {
1501     $_[0]{rbuf} =~ s/$eol// or return;
1502 elmex 1.1
1503 root 1.227 $cb->($_[0], "$1", "$2");
1504 root 1.76 1
1505     }
1506 root 1.8 }
1507 root 1.28 };
1508 elmex 1.1
1509 root 1.40 =item regex => $accept[, $reject[, $skip], $cb->($handle, $data)
1510 root 1.36
1511     Makes a regex match against the regex object C<$accept> and returns
1512     everything up to and including the match.
1513    
1514     Example: read a single line terminated by '\n'.
1515    
1516     $handle->push_read (regex => qr<\n>, sub { ... });
1517    
1518     If C<$reject> is given and not undef, then it determines when the data is
1519     to be rejected: it is matched against the data when the C<$accept> regex
1520     does not match and generates an C<EBADMSG> error when it matches. This is
1521     useful to quickly reject wrong data (to avoid waiting for a timeout or a
1522     receive buffer overflow).
1523    
1524     Example: expect a single decimal number followed by whitespace, reject
1525     anything else (not the use of an anchor).
1526    
1527     $handle->push_read (regex => qr<^[0-9]+\s>, qr<[^0-9]>, sub { ... });
1528    
1529     If C<$skip> is given and not C<undef>, then it will be matched against
1530     the receive buffer when neither C<$accept> nor C<$reject> match,
1531     and everything preceding and including the match will be accepted
1532     unconditionally. This is useful to skip large amounts of data that you
1533     know cannot be matched, so that the C<$accept> or C<$reject> regex do not
1534     have to start matching from the beginning. This is purely an optimisation
1535 root 1.198 and is usually worth it only when you expect more than a few kilobytes.
1536 root 1.36
1537     Example: expect a http header, which ends at C<\015\012\015\012>. Since we
1538 root 1.198 expect the header to be very large (it isn't in practice, but...), we use
1539 root 1.36 a skip regex to skip initial portions. The skip regex is tricky in that
1540     it only accepts something not ending in either \015 or \012, as these are
1541     required for the accept regex.
1542    
1543     $handle->push_read (regex =>
1544     qr<\015\012\015\012>,
1545     undef, # no reject
1546     qr<^.*[^\015\012]>,
1547     sub { ... });
1548    
1549     =cut
1550    
1551     register_read_type regex => sub {
1552     my ($self, $cb, $accept, $reject, $skip) = @_;
1553    
1554     my $data;
1555     my $rbuf = \$self->{rbuf};
1556    
1557     sub {
1558     # accept
1559     if ($$rbuf =~ $accept) {
1560     $data .= substr $$rbuf, 0, $+[0], "";
1561 root 1.220 $cb->($_[0], $data);
1562 root 1.36 return 1;
1563     }
1564    
1565     # reject
1566     if ($reject && $$rbuf =~ $reject) {
1567 root 1.220 $_[0]->_error (Errno::EBADMSG);
1568 root 1.36 }
1569    
1570     # skip
1571     if ($skip && $$rbuf =~ $skip) {
1572     $data .= substr $$rbuf, 0, $+[0], "";
1573     }
1574    
1575     ()
1576     }
1577     };
1578    
1579 root 1.61 =item netstring => $cb->($handle, $string)
1580    
1581     A netstring (http://cr.yp.to/proto/netstrings.txt, this is not an endorsement).
1582    
1583     Throws an error with C<$!> set to EBADMSG on format violations.
1584    
1585     =cut
1586    
1587     register_read_type netstring => sub {
1588     my ($self, $cb) = @_;
1589    
1590     sub {
1591     unless ($_[0]{rbuf} =~ s/^(0|[1-9][0-9]*)://) {
1592     if ($_[0]{rbuf} =~ /[^0-9]/) {
1593 root 1.220 $_[0]->_error (Errno::EBADMSG);
1594 root 1.61 }
1595     return;
1596     }
1597    
1598     my $len = $1;
1599    
1600 root 1.220 $_[0]->unshift_read (chunk => $len, sub {
1601 root 1.61 my $string = $_[1];
1602     $_[0]->unshift_read (chunk => 1, sub {
1603     if ($_[1] eq ",") {
1604     $cb->($_[0], $string);
1605     } else {
1606 root 1.220 $_[0]->_error (Errno::EBADMSG);
1607 root 1.61 }
1608     });
1609     });
1610    
1611     1
1612     }
1613     };
1614    
1615     =item packstring => $format, $cb->($handle, $string)
1616    
1617     An octet string prefixed with an encoded length. The encoding C<$format>
1618     uses the same format as a Perl C<pack> format, but must specify a single
1619     integer only (only one of C<cCsSlLqQiInNvVjJw> is allowed, plus an
1620     optional C<!>, C<< < >> or C<< > >> modifier).
1621    
1622 root 1.96 For example, DNS over TCP uses a prefix of C<n> (2 octet network order),
1623     EPP uses a prefix of C<N> (4 octtes).
1624 root 1.61
1625     Example: read a block of data prefixed by its length in BER-encoded
1626     format (very efficient).
1627    
1628     $handle->push_read (packstring => "w", sub {
1629     my ($handle, $data) = @_;
1630     });
1631    
1632     =cut
1633    
1634     register_read_type packstring => sub {
1635     my ($self, $cb, $format) = @_;
1636    
1637     sub {
1638     # when we can use 5.10 we can use ".", but for 5.8 we use the re-pack method
1639 root 1.76 defined (my $len = eval { unpack $format, $_[0]{rbuf} })
1640 root 1.61 or return;
1641    
1642 root 1.77 $format = length pack $format, $len;
1643 root 1.61
1644 root 1.77 # bypass unshift if we already have the remaining chunk
1645     if ($format + $len <= length $_[0]{rbuf}) {
1646     my $data = substr $_[0]{rbuf}, $format, $len;
1647     substr $_[0]{rbuf}, 0, $format + $len, "";
1648     $cb->($_[0], $data);
1649     } else {
1650     # remove prefix
1651     substr $_[0]{rbuf}, 0, $format, "";
1652    
1653     # read remaining chunk
1654     $_[0]->unshift_read (chunk => $len, $cb);
1655     }
1656 root 1.61
1657     1
1658     }
1659     };
1660    
1661 root 1.40 =item json => $cb->($handle, $hash_or_arrayref)
1662    
1663 root 1.110 Reads a JSON object or array, decodes it and passes it to the
1664     callback. When a parse error occurs, an C<EBADMSG> error will be raised.
1665 root 1.40
1666     If a C<json> object was passed to the constructor, then that will be used
1667     for the final decode, otherwise it will create a JSON coder expecting UTF-8.
1668    
1669     This read type uses the incremental parser available with JSON version
1670     2.09 (and JSON::XS version 2.2) and above. You have to provide a
1671     dependency on your own: this module will load the JSON module, but
1672     AnyEvent does not depend on it itself.
1673    
1674     Since JSON texts are fully self-delimiting, the C<json> read and write
1675 root 1.41 types are an ideal simple RPC protocol: just exchange JSON datagrams. See
1676     the C<json> write type description, above, for an actual example.
1677 root 1.40
1678     =cut
1679    
1680     register_read_type json => sub {
1681 root 1.63 my ($self, $cb) = @_;
1682 root 1.40
1683 root 1.179 my $json = $self->{json} ||= json_coder;
1684 root 1.40
1685     my $data;
1686     my $rbuf = \$self->{rbuf};
1687    
1688     sub {
1689 root 1.220 my $ref = eval { $json->incr_parse ($_[0]{rbuf}) };
1690 root 1.110
1691 root 1.113 if ($ref) {
1692 root 1.220 $_[0]{rbuf} = $json->incr_text;
1693 root 1.113 $json->incr_text = "";
1694 root 1.220 $cb->($_[0], $ref);
1695 root 1.110
1696     1
1697 root 1.113 } elsif ($@) {
1698 root 1.111 # error case
1699 root 1.110 $json->incr_skip;
1700 root 1.40
1701 root 1.220 $_[0]{rbuf} = $json->incr_text;
1702 root 1.40 $json->incr_text = "";
1703    
1704 root 1.220 $_[0]->_error (Errno::EBADMSG);
1705 root 1.114
1706 root 1.113 ()
1707     } else {
1708 root 1.220 $_[0]{rbuf} = "";
1709 root 1.114
1710 root 1.113 ()
1711     }
1712 root 1.40 }
1713     };
1714    
1715 root 1.63 =item storable => $cb->($handle, $ref)
1716    
1717     Deserialises a L<Storable> frozen representation as written by the
1718     C<storable> write type (BER-encoded length prefix followed by nfreeze'd
1719     data).
1720    
1721     Raises C<EBADMSG> error if the data could not be decoded.
1722    
1723     =cut
1724    
1725     register_read_type storable => sub {
1726     my ($self, $cb) = @_;
1727    
1728 root 1.224 require Storable unless $Storable::VERSION;
1729 root 1.63
1730     sub {
1731     # when we can use 5.10 we can use ".", but for 5.8 we use the re-pack method
1732 root 1.76 defined (my $len = eval { unpack "w", $_[0]{rbuf} })
1733 root 1.63 or return;
1734    
1735 root 1.77 my $format = length pack "w", $len;
1736 root 1.63
1737 root 1.77 # bypass unshift if we already have the remaining chunk
1738     if ($format + $len <= length $_[0]{rbuf}) {
1739     my $data = substr $_[0]{rbuf}, $format, $len;
1740     substr $_[0]{rbuf}, 0, $format + $len, "";
1741 root 1.232
1742     eval { $cb->($_[0], Storable::thaw ($data)); 1 }
1743     or return $_[0]->_error (Errno::EBADMSG);
1744 root 1.77 } else {
1745     # remove prefix
1746     substr $_[0]{rbuf}, 0, $format, "";
1747    
1748     # read remaining chunk
1749     $_[0]->unshift_read (chunk => $len, sub {
1750 root 1.232 eval { $cb->($_[0], Storable::thaw ($_[1])); 1 }
1751     or $_[0]->_error (Errno::EBADMSG);
1752 root 1.77 });
1753     }
1754    
1755     1
1756 root 1.63 }
1757     };
1758    
1759 root 1.28 =back
1760    
1761 root 1.185 =item custom read types - Package::anyevent_read_type $handle, $cb, @args
1762 root 1.30
1763 root 1.185 Instead of one of the predefined types, you can also specify the name
1764     of a package. AnyEvent will try to load the package and then expects to
1765     find a function named C<anyevent_read_type> inside. If it isn't found, it
1766     progressively tries to load the parent package until it either finds the
1767     function (good) or runs out of packages (bad).
1768    
1769     Whenever this type is used, C<push_read> will invoke the function with the
1770     handle object, the original callback and the remaining arguments.
1771    
1772     The function is supposed to return a callback (usually a closure) that
1773     works as a plain read callback (see C<< ->push_read ($cb) >>), so you can
1774     mentally treat the function as a "configurable read type to read callback"
1775     converter.
1776    
1777     It should invoke the original callback when it is done reading (remember
1778     to pass C<$handle> as first argument as all other callbacks do that,
1779     although there is no strict requirement on this).
1780 root 1.30
1781 root 1.185 For examples, see the source of this module (F<perldoc -m
1782     AnyEvent::Handle>, search for C<register_read_type>)).
1783 root 1.30
1784 root 1.10 =item $handle->stop_read
1785    
1786     =item $handle->start_read
1787    
1788 root 1.18 In rare cases you actually do not want to read anything from the
1789 root 1.58 socket. In this case you can call C<stop_read>. Neither C<on_read> nor
1790 root 1.22 any queued callbacks will be executed then. To start reading again, call
1791 root 1.10 C<start_read>.
1792    
1793 root 1.56 Note that AnyEvent::Handle will automatically C<start_read> for you when
1794     you change the C<on_read> callback or push/unshift a read callback, and it
1795     will automatically C<stop_read> for you when neither C<on_read> is set nor
1796     there are any read requests in the queue.
1797    
1798 root 1.213 In older versions of this module (<= 5.3), these methods had no effect,
1799     as TLS does not support half-duplex connections. In current versions they
1800     work as expected, as this behaviour is required to avoid certain resource
1801     attacks, where the program would be forced to read (and buffer) arbitrary
1802     amounts of data before being able to send some data. The drawback is that
1803     some readings of the the SSL/TLS specifications basically require this
1804     attack to be working, as SSL/TLS implementations might stall sending data
1805     during a rehandshake.
1806    
1807     As a guideline, during the initial handshake, you should not stop reading,
1808 root 1.226 and as a client, it might cause problems, depending on your application.
1809 root 1.93
1810 root 1.10 =cut
1811    
1812     sub stop_read {
1813     my ($self) = @_;
1814 elmex 1.1
1815 root 1.213 delete $self->{_rw};
1816 root 1.8 }
1817 elmex 1.1
1818 root 1.10 sub start_read {
1819     my ($self) = @_;
1820    
1821 root 1.192 unless ($self->{_rw} || $self->{_eof} || !$self->{fh}) {
1822 root 1.10 Scalar::Util::weaken $self;
1823    
1824 root 1.175 $self->{_rw} = AE::io $self->{fh}, 0, sub {
1825 root 1.93 my $rbuf = \($self->{tls} ? my $buf : $self->{rbuf});
1826 root 1.203 my $len = sysread $self->{fh}, $$rbuf, $self->{read_size}, length $$rbuf;
1827 root 1.10
1828     if ($len > 0) {
1829 root 1.176 $self->{_activity} = $self->{_ractivity} = AE::now;
1830 root 1.43
1831 root 1.93 if ($self->{tls}) {
1832     Net::SSLeay::BIO_write ($self->{_rbio}, $$rbuf);
1833 root 1.97
1834 root 1.93 &_dotls ($self);
1835     } else {
1836 root 1.159 $self->_drain_rbuf;
1837 root 1.93 }
1838 root 1.10
1839 root 1.203 if ($len == $self->{read_size}) {
1840     $self->{read_size} *= 2;
1841     $self->{read_size} = $self->{max_read_size} || MAX_READ_SIZE
1842     if $self->{read_size} > ($self->{max_read_size} || MAX_READ_SIZE);
1843     }
1844    
1845 root 1.10 } elsif (defined $len) {
1846 root 1.38 delete $self->{_rw};
1847     $self->{_eof} = 1;
1848 root 1.159 $self->_drain_rbuf;
1849 root 1.10
1850 root 1.42 } elsif ($! != EAGAIN && $! != EINTR && $! != WSAEWOULDBLOCK) {
1851 root 1.52 return $self->_error ($!, 1);
1852 root 1.10 }
1853 root 1.175 };
1854 root 1.10 }
1855 elmex 1.1 }
1856    
1857 root 1.133 our $ERROR_SYSCALL;
1858     our $ERROR_WANT_READ;
1859    
1860     sub _tls_error {
1861     my ($self, $err) = @_;
1862    
1863     return $self->_error ($!, 1)
1864     if $err == Net::SSLeay::ERROR_SYSCALL ();
1865    
1866 root 1.233 my $err = Net::SSLeay::ERR_error_string (Net::SSLeay::ERR_get_error ());
1867 root 1.137
1868     # reduce error string to look less scary
1869     $err =~ s/^error:[0-9a-fA-F]{8}:[^:]+:([^:]+):/\L$1: /;
1870    
1871 root 1.143 if ($self->{_on_starttls}) {
1872     (delete $self->{_on_starttls})->($self, undef, $err);
1873     &_freetls;
1874     } else {
1875     &_freetls;
1876 root 1.150 $self->_error (Errno::EPROTO, 1, $err);
1877 root 1.143 }
1878 root 1.133 }
1879    
1880 root 1.97 # poll the write BIO and send the data if applicable
1881 root 1.133 # also decode read data if possible
1882     # this is basiclaly our TLS state machine
1883     # more efficient implementations are possible with openssl,
1884     # but not with the buggy and incomplete Net::SSLeay.
1885 root 1.19 sub _dotls {
1886     my ($self) = @_;
1887    
1888 root 1.97 my $tmp;
1889 root 1.56
1890 root 1.38 if (length $self->{_tls_wbuf}) {
1891 root 1.97 while (($tmp = Net::SSLeay::write ($self->{tls}, $self->{_tls_wbuf})) > 0) {
1892     substr $self->{_tls_wbuf}, 0, $tmp, "";
1893 root 1.22 }
1894 root 1.133
1895     $tmp = Net::SSLeay::get_error ($self->{tls}, $tmp);
1896     return $self->_tls_error ($tmp)
1897     if $tmp != $ERROR_WANT_READ
1898 root 1.142 && ($tmp != $ERROR_SYSCALL || $!);
1899 root 1.19 }
1900    
1901 root 1.97 while (defined ($tmp = Net::SSLeay::read ($self->{tls}))) {
1902     unless (length $tmp) {
1903 root 1.143 $self->{_on_starttls}
1904     and (delete $self->{_on_starttls})->($self, undef, "EOF during handshake"); # ???
1905 root 1.92 &_freetls;
1906 root 1.143
1907 root 1.142 if ($self->{on_stoptls}) {
1908     $self->{on_stoptls}($self);
1909     return;
1910     } else {
1911     # let's treat SSL-eof as we treat normal EOF
1912     delete $self->{_rw};
1913     $self->{_eof} = 1;
1914     }
1915 root 1.56 }
1916 root 1.91
1917 root 1.116 $self->{_tls_rbuf} .= $tmp;
1918 root 1.159 $self->_drain_rbuf;
1919 root 1.92 $self->{tls} or return; # tls session might have gone away in callback
1920 root 1.23 }
1921    
1922 root 1.97 $tmp = Net::SSLeay::get_error ($self->{tls}, -1);
1923 root 1.133 return $self->_tls_error ($tmp)
1924     if $tmp != $ERROR_WANT_READ
1925 root 1.142 && ($tmp != $ERROR_SYSCALL || $!);
1926 root 1.91
1927 root 1.97 while (length ($tmp = Net::SSLeay::BIO_read ($self->{_wbio}))) {
1928     $self->{wbuf} .= $tmp;
1929 root 1.91 $self->_drain_wbuf;
1930 root 1.192 $self->{tls} or return; # tls session might have gone away in callback
1931 root 1.91 }
1932 root 1.142
1933     $self->{_on_starttls}
1934     and Net::SSLeay::state ($self->{tls}) == Net::SSLeay::ST_OK ()
1935 root 1.143 and (delete $self->{_on_starttls})->($self, 1, "TLS/SSL connection established");
1936 root 1.19 }
1937    
1938 root 1.25 =item $handle->starttls ($tls[, $tls_ctx])
1939    
1940     Instead of starting TLS negotiation immediately when the AnyEvent::Handle
1941     object is created, you can also do that at a later time by calling
1942     C<starttls>.
1943    
1944 root 1.157 Starting TLS is currently an asynchronous operation - when you push some
1945     write data and then call C<< ->starttls >> then TLS negotiation will start
1946     immediately, after which the queued write data is then sent.
1947    
1948 root 1.25 The first argument is the same as the C<tls> constructor argument (either
1949     C<"connect">, C<"accept"> or an existing Net::SSLeay object).
1950    
1951 root 1.131 The second argument is the optional C<AnyEvent::TLS> object that is used
1952     when AnyEvent::Handle has to create its own TLS connection object, or
1953     a hash reference with C<< key => value >> pairs that will be used to
1954     construct a new context.
1955    
1956     The TLS connection object will end up in C<< $handle->{tls} >>, the TLS
1957     context in C<< $handle->{tls_ctx} >> after this call and can be used or
1958     changed to your liking. Note that the handshake might have already started
1959     when this function returns.
1960 root 1.38
1961 root 1.160 Due to bugs in OpenSSL, it might or might not be possible to do multiple
1962 root 1.198 handshakes on the same stream. It is best to not attempt to use the
1963     stream after stopping TLS.
1964 root 1.92
1965 root 1.193 This method may invoke callbacks (and therefore the handle might be
1966     destroyed after it returns).
1967    
1968 root 1.25 =cut
1969    
1970 root 1.137 our %TLS_CACHE; #TODO not yet documented, should we?
1971    
1972 root 1.19 sub starttls {
1973 root 1.160 my ($self, $tls, $ctx) = @_;
1974    
1975     Carp::croak "It is an error to call starttls on an AnyEvent::Handle object while TLS is already active, caught"
1976     if $self->{tls};
1977    
1978     $self->{tls} = $tls;
1979     $self->{tls_ctx} = $ctx if @_ > 2;
1980    
1981     return unless $self->{fh};
1982 root 1.19
1983 root 1.94 require Net::SSLeay;
1984    
1985 root 1.142 $ERROR_SYSCALL = Net::SSLeay::ERROR_SYSCALL ();
1986     $ERROR_WANT_READ = Net::SSLeay::ERROR_WANT_READ ();
1987 root 1.133
1988 root 1.180 $tls = delete $self->{tls};
1989 root 1.160 $ctx = $self->{tls_ctx};
1990 root 1.131
1991 root 1.157 local $Carp::CarpLevel = 1; # skip ourselves when creating a new context or session
1992    
1993 root 1.131 if ("HASH" eq ref $ctx) {
1994     require AnyEvent::TLS;
1995    
1996 root 1.137 if ($ctx->{cache}) {
1997     my $key = $ctx+0;
1998     $ctx = $TLS_CACHE{$key} ||= new AnyEvent::TLS %$ctx;
1999     } else {
2000     $ctx = new AnyEvent::TLS %$ctx;
2001     }
2002 root 1.131 }
2003 root 1.92
2004 root 1.131 $self->{tls_ctx} = $ctx || TLS_CTX ();
2005 root 1.160 $self->{tls} = $tls = $self->{tls_ctx}->_get_session ($tls, $self, $self->{peername});
2006 root 1.19
2007 root 1.21 # basically, this is deep magic (because SSL_read should have the same issues)
2008     # but the openssl maintainers basically said: "trust us, it just works".
2009     # (unfortunately, we have to hardcode constants because the abysmally misdesigned
2010     # and mismaintained ssleay-module doesn't even offer them).
2011 root 1.27 # http://www.mail-archive.com/openssl-dev@openssl.org/msg22420.html
2012 root 1.87 #
2013     # in short: this is a mess.
2014     #
2015 root 1.93 # note that we do not try to keep the length constant between writes as we are required to do.
2016 root 1.87 # we assume that most (but not all) of this insanity only applies to non-blocking cases,
2017 root 1.93 # and we drive openssl fully in blocking mode here. Or maybe we don't - openssl seems to
2018     # have identity issues in that area.
2019 root 1.131 # Net::SSLeay::CTX_set_mode ($ssl,
2020     # (eval { local $SIG{__DIE__}; Net::SSLeay::MODE_ENABLE_PARTIAL_WRITE () } || 1)
2021     # | (eval { local $SIG{__DIE__}; Net::SSLeay::MODE_ACCEPT_MOVING_WRITE_BUFFER () } || 2));
2022 root 1.160 Net::SSLeay::CTX_set_mode ($tls, 1|2);
2023 root 1.21
2024 root 1.38 $self->{_rbio} = Net::SSLeay::BIO_new (Net::SSLeay::BIO_s_mem ());
2025     $self->{_wbio} = Net::SSLeay::BIO_new (Net::SSLeay::BIO_s_mem ());
2026 root 1.19
2027 root 1.219 Net::SSLeay::BIO_write ($self->{_rbio}, $self->{rbuf});
2028     $self->{rbuf} = "";
2029 root 1.172
2030 root 1.160 Net::SSLeay::set_bio ($tls, $self->{_rbio}, $self->{_wbio});
2031 root 1.19
2032 root 1.142 $self->{_on_starttls} = sub { $_[0]{on_starttls}(@_) }
2033 root 1.143 if $self->{on_starttls};
2034 root 1.142
2035 root 1.93 &_dotls; # need to trigger the initial handshake
2036     $self->start_read; # make sure we actually do read
2037 root 1.19 }
2038    
2039 root 1.25 =item $handle->stoptls
2040    
2041 root 1.92 Shuts down the SSL connection - this makes a proper EOF handshake by
2042     sending a close notify to the other side, but since OpenSSL doesn't
2043 root 1.192 support non-blocking shut downs, it is not guaranteed that you can re-use
2044 root 1.160 the stream afterwards.
2045 root 1.25
2046 root 1.193 This method may invoke callbacks (and therefore the handle might be
2047     destroyed after it returns).
2048    
2049 root 1.25 =cut
2050    
2051     sub stoptls {
2052     my ($self) = @_;
2053    
2054 root 1.192 if ($self->{tls} && $self->{fh}) {
2055 root 1.94 Net::SSLeay::shutdown ($self->{tls});
2056 root 1.92
2057     &_dotls;
2058    
2059 root 1.142 # # we don't give a shit. no, we do, but we can't. no...#d#
2060     # # we, we... have to use openssl :/#d#
2061     # &_freetls;#d#
2062 root 1.92 }
2063     }
2064    
2065     sub _freetls {
2066     my ($self) = @_;
2067    
2068     return unless $self->{tls};
2069 root 1.38
2070 root 1.160 $self->{tls_ctx}->_put_session (delete $self->{tls})
2071 root 1.171 if $self->{tls} > 0;
2072 root 1.92
2073 root 1.143 delete @$self{qw(_rbio _wbio _tls_wbuf _on_starttls)};
2074 root 1.25 }
2075    
2076 root 1.216 =item $handle->resettls
2077    
2078     This rarely-used method simply resets and TLS state on the handle, usually
2079     causing data loss.
2080    
2081     One case where it may be useful is when you want to skip over the data in
2082     the stream but you are not interested in interpreting it, so data loss is
2083     no concern.
2084    
2085     =cut
2086    
2087     *resettls = \&_freetls;
2088    
2089 root 1.19 sub DESTROY {
2090 root 1.120 my ($self) = @_;
2091 root 1.19
2092 root 1.92 &_freetls;
2093 root 1.62
2094     my $linger = exists $self->{linger} ? $self->{linger} : 3600;
2095    
2096 root 1.156 if ($linger && length $self->{wbuf} && $self->{fh}) {
2097 root 1.62 my $fh = delete $self->{fh};
2098     my $wbuf = delete $self->{wbuf};
2099    
2100     my @linger;
2101    
2102 root 1.175 push @linger, AE::io $fh, 1, sub {
2103 root 1.62 my $len = syswrite $fh, $wbuf, length $wbuf;
2104    
2105     if ($len > 0) {
2106     substr $wbuf, 0, $len, "";
2107 root 1.202 } elsif (defined $len || ($! != EAGAIN && $! != EINTR && $! != WSAEWOULDBLOCK)) {
2108 root 1.62 @linger = (); # end
2109     }
2110 root 1.175 };
2111     push @linger, AE::timer $linger, 0, sub {
2112 root 1.62 @linger = ();
2113 root 1.175 };
2114 root 1.62 }
2115 root 1.19 }
2116    
2117 root 1.99 =item $handle->destroy
2118    
2119 root 1.101 Shuts down the handle object as much as possible - this call ensures that
2120 root 1.141 no further callbacks will be invoked and as many resources as possible
2121 root 1.165 will be freed. Any method you will call on the handle object after
2122     destroying it in this way will be silently ignored (and it will return the
2123     empty list).
2124 root 1.99
2125 root 1.101 Normally, you can just "forget" any references to an AnyEvent::Handle
2126     object and it will simply shut down. This works in fatal error and EOF
2127     callbacks, as well as code outside. It does I<NOT> work in a read or write
2128     callback, so when you want to destroy the AnyEvent::Handle object from
2129     within such an callback. You I<MUST> call C<< ->destroy >> explicitly in
2130     that case.
2131    
2132 root 1.149 Destroying the handle object in this way has the advantage that callbacks
2133     will be removed as well, so if those are the only reference holders (as
2134     is common), then one doesn't need to do anything special to break any
2135     reference cycles.
2136    
2137 root 1.99 The handle might still linger in the background and write out remaining
2138     data, as specified by the C<linger> option, however.
2139    
2140     =cut
2141    
2142     sub destroy {
2143     my ($self) = @_;
2144    
2145     $self->DESTROY;
2146     %$self = ();
2147 root 1.164 bless $self, "AnyEvent::Handle::destroyed";
2148     }
2149    
2150 root 1.165 sub AnyEvent::Handle::destroyed::AUTOLOAD {
2151     #nop
2152 root 1.99 }
2153    
2154 root 1.192 =item $handle->destroyed
2155    
2156     Returns false as long as the handle hasn't been destroyed by a call to C<<
2157     ->destroy >>, true otherwise.
2158    
2159     Can be useful to decide whether the handle is still valid after some
2160     callback possibly destroyed the handle. For example, C<< ->push_write >>,
2161     C<< ->starttls >> and other methods can call user callbacks, which in turn
2162     can destroy the handle, so work can be avoided by checking sometimes:
2163    
2164     $hdl->starttls ("accept");
2165     return if $hdl->destroyed;
2166     $hdl->push_write (...
2167    
2168     Note that the call to C<push_write> will silently be ignored if the handle
2169     has been destroyed, so often you can just ignore the possibility of the
2170     handle being destroyed.
2171    
2172     =cut
2173    
2174     sub destroyed { 0 }
2175     sub AnyEvent::Handle::destroyed::destroyed { 1 }
2176    
2177 root 1.19 =item AnyEvent::Handle::TLS_CTX
2178    
2179 root 1.131 This function creates and returns the AnyEvent::TLS object used by default
2180     for TLS mode.
2181 root 1.19
2182 root 1.131 The context is created by calling L<AnyEvent::TLS> without any arguments.
2183 root 1.19
2184     =cut
2185    
2186     our $TLS_CTX;
2187    
2188     sub TLS_CTX() {
2189 root 1.131 $TLS_CTX ||= do {
2190     require AnyEvent::TLS;
2191 root 1.19
2192 root 1.131 new AnyEvent::TLS
2193 root 1.19 }
2194     }
2195    
2196 elmex 1.1 =back
2197    
2198 root 1.95
2199     =head1 NONFREQUENTLY ASKED QUESTIONS
2200    
2201     =over 4
2202    
2203 root 1.101 =item I C<undef> the AnyEvent::Handle reference inside my callback and
2204     still get further invocations!
2205    
2206     That's because AnyEvent::Handle keeps a reference to itself when handling
2207     read or write callbacks.
2208    
2209     It is only safe to "forget" the reference inside EOF or error callbacks,
2210     from within all other callbacks, you need to explicitly call the C<<
2211     ->destroy >> method.
2212    
2213 root 1.208 =item Why is my C<on_eof> callback never called?
2214    
2215     Probably because your C<on_error> callback is being called instead: When
2216     you have outstanding requests in your read queue, then an EOF is
2217     considered an error as you clearly expected some data.
2218    
2219     To avoid this, make sure you have an empty read queue whenever your handle
2220 root 1.223 is supposed to be "idle" (i.e. connection closes are O.K.). You can set
2221 root 1.208 an C<on_read> handler that simply pushes the first read requests in the
2222     queue.
2223    
2224     See also the next question, which explains this in a bit more detail.
2225    
2226     =item How can I serve requests in a loop?
2227    
2228     Most protocols consist of some setup phase (authentication for example)
2229     followed by a request handling phase, where the server waits for requests
2230     and handles them, in a loop.
2231    
2232     There are two important variants: The first (traditional, better) variant
2233     handles requests until the server gets some QUIT command, causing it to
2234     close the connection first (highly desirable for a busy TCP server). A
2235     client dropping the connection is an error, which means this variant can
2236     detect an unexpected detection close.
2237    
2238     To handle this case, always make sure you have a on-empty read queue, by
2239     pushing the "read request start" handler on it:
2240    
2241     # we assume a request starts with a single line
2242     my @start_request; @start_request = (line => sub {
2243     my ($hdl, $line) = @_;
2244    
2245     ... handle request
2246    
2247     # push next request read, possibly from a nested callback
2248     $hdl->push_read (@start_request);
2249     });
2250    
2251     # auth done, now go into request handling loop
2252     # now push the first @start_request
2253     $hdl->push_read (@start_request);
2254    
2255     By always having an outstanding C<push_read>, the handle always expects
2256     some data and raises the C<EPIPE> error when the connction is dropped
2257     unexpectedly.
2258    
2259     The second variant is a protocol where the client can drop the connection
2260     at any time. For TCP, this means that the server machine may run out of
2261 root 1.223 sockets easier, and in general, it means you cannot distinguish a protocl
2262 root 1.208 failure/client crash from a normal connection close. Nevertheless, these
2263     kinds of protocols are common (and sometimes even the best solution to the
2264     problem).
2265    
2266     Having an outstanding read request at all times is possible if you ignore
2267     C<EPIPE> errors, but this doesn't help with when the client drops the
2268     connection during a request, which would still be an error.
2269    
2270     A better solution is to push the initial request read in an C<on_read>
2271     callback. This avoids an error, as when the server doesn't expect data
2272     (i.e. is idly waiting for the next request, an EOF will not raise an
2273     error, but simply result in an C<on_eof> callback. It is also a bit slower
2274     and simpler:
2275    
2276     # auth done, now go into request handling loop
2277     $hdl->on_read (sub {
2278     my ($hdl) = @_;
2279    
2280     # called each time we receive data but the read queue is empty
2281     # simply start read the request
2282    
2283     $hdl->push_read (line => sub {
2284     my ($hdl, $line) = @_;
2285    
2286     ... handle request
2287    
2288     # do nothing special when the request has been handled, just
2289     # let the request queue go empty.
2290     });
2291     });
2292    
2293 root 1.101 =item I get different callback invocations in TLS mode/Why can't I pause
2294     reading?
2295    
2296     Unlike, say, TCP, TLS connections do not consist of two independent
2297 root 1.198 communication channels, one for each direction. Or put differently, the
2298 root 1.101 read and write directions are not independent of each other: you cannot
2299     write data unless you are also prepared to read, and vice versa.
2300    
2301 root 1.198 This means that, in TLS mode, you might get C<on_error> or C<on_eof>
2302 root 1.101 callback invocations when you are not expecting any read data - the reason
2303     is that AnyEvent::Handle always reads in TLS mode.
2304    
2305     During the connection, you have to make sure that you always have a
2306     non-empty read-queue, or an C<on_read> watcher. At the end of the
2307     connection (or when you no longer want to use it) you can call the
2308     C<destroy> method.
2309    
2310 root 1.95 =item How do I read data until the other side closes the connection?
2311    
2312 root 1.96 If you just want to read your data into a perl scalar, the easiest way
2313     to achieve this is by setting an C<on_read> callback that does nothing,
2314     clearing the C<on_eof> callback and in the C<on_error> callback, the data
2315     will be in C<$_[0]{rbuf}>:
2316 root 1.95
2317     $handle->on_read (sub { });
2318     $handle->on_eof (undef);
2319     $handle->on_error (sub {
2320     my $data = delete $_[0]{rbuf};
2321     });
2322    
2323 root 1.219 Note that this example removes the C<rbuf> member from the handle object,
2324     which is not normally allowed by the API. It is expressly permitted in
2325     this case only, as the handle object needs to be destroyed afterwards.
2326    
2327 root 1.95 The reason to use C<on_error> is that TCP connections, due to latencies
2328     and packets loss, might get closed quite violently with an error, when in
2329 root 1.198 fact all data has been received.
2330 root 1.95
2331 root 1.101 It is usually better to use acknowledgements when transferring data,
2332 root 1.95 to make sure the other side hasn't just died and you got the data
2333     intact. This is also one reason why so many internet protocols have an
2334     explicit QUIT command.
2335    
2336 root 1.96 =item I don't want to destroy the handle too early - how do I wait until
2337     all data has been written?
2338 root 1.95
2339     After writing your last bits of data, set the C<on_drain> callback
2340     and destroy the handle in there - with the default setting of
2341     C<low_water_mark> this will be called precisely when all data has been
2342     written to the socket:
2343    
2344     $handle->push_write (...);
2345     $handle->on_drain (sub {
2346 root 1.231 AE::log debug => "All data submitted to the kernel.";
2347 root 1.95 undef $handle;
2348     });
2349    
2350 root 1.143 If you just want to queue some data and then signal EOF to the other side,
2351     consider using C<< ->push_shutdown >> instead.
2352    
2353     =item I want to contact a TLS/SSL server, I don't care about security.
2354    
2355     If your TLS server is a pure TLS server (e.g. HTTPS) that only speaks TLS,
2356 root 1.198 connect to it and then create the AnyEvent::Handle with the C<tls>
2357 root 1.143 parameter:
2358    
2359 root 1.144 tcp_connect $host, $port, sub {
2360     my ($fh) = @_;
2361 root 1.143
2362 root 1.144 my $handle = new AnyEvent::Handle
2363     fh => $fh,
2364     tls => "connect",
2365     on_error => sub { ... };
2366    
2367     $handle->push_write (...);
2368     };
2369 root 1.143
2370     =item I want to contact a TLS/SSL server, I do care about security.
2371    
2372 root 1.144 Then you should additionally enable certificate verification, including
2373     peername verification, if the protocol you use supports it (see
2374     L<AnyEvent::TLS>, C<verify_peername>).
2375    
2376     E.g. for HTTPS:
2377    
2378     tcp_connect $host, $port, sub {
2379     my ($fh) = @_;
2380    
2381     my $handle = new AnyEvent::Handle
2382     fh => $fh,
2383     peername => $host,
2384     tls => "connect",
2385     tls_ctx => { verify => 1, verify_peername => "https" },
2386     ...
2387    
2388     Note that you must specify the hostname you connected to (or whatever
2389     "peername" the protocol needs) as the C<peername> argument, otherwise no
2390     peername verification will be done.
2391    
2392     The above will use the system-dependent default set of trusted CA
2393     certificates. If you want to check against a specific CA, add the
2394     C<ca_file> (or C<ca_cert>) arguments to C<tls_ctx>:
2395    
2396     tls_ctx => {
2397     verify => 1,
2398     verify_peername => "https",
2399     ca_file => "my-ca-cert.pem",
2400     },
2401    
2402     =item I want to create a TLS/SSL server, how do I do that?
2403    
2404     Well, you first need to get a server certificate and key. You have
2405     three options: a) ask a CA (buy one, use cacert.org etc.) b) create a
2406     self-signed certificate (cheap. check the search engine of your choice,
2407     there are many tutorials on the net) or c) make your own CA (tinyca2 is a
2408     nice program for that purpose).
2409    
2410     Then create a file with your private key (in PEM format, see
2411     L<AnyEvent::TLS>), followed by the certificate (also in PEM format). The
2412     file should then look like this:
2413    
2414     -----BEGIN RSA PRIVATE KEY-----
2415     ...header data
2416     ... lots of base64'y-stuff
2417     -----END RSA PRIVATE KEY-----
2418    
2419     -----BEGIN CERTIFICATE-----
2420     ... lots of base64'y-stuff
2421     -----END CERTIFICATE-----
2422    
2423     The important bits are the "PRIVATE KEY" and "CERTIFICATE" parts. Then
2424     specify this file as C<cert_file>:
2425    
2426     tcp_server undef, $port, sub {
2427     my ($fh) = @_;
2428    
2429     my $handle = new AnyEvent::Handle
2430     fh => $fh,
2431     tls => "accept",
2432     tls_ctx => { cert_file => "my-server-keycert.pem" },
2433     ...
2434 root 1.143
2435 root 1.144 When you have intermediate CA certificates that your clients might not
2436     know about, just append them to the C<cert_file>.
2437 root 1.143
2438 root 1.95 =back
2439    
2440 root 1.38 =head1 SUBCLASSING AnyEvent::Handle
2441    
2442     In many cases, you might want to subclass AnyEvent::Handle.
2443    
2444     To make this easier, a given version of AnyEvent::Handle uses these
2445     conventions:
2446    
2447     =over 4
2448    
2449     =item * all constructor arguments become object members.
2450    
2451     At least initially, when you pass a C<tls>-argument to the constructor it
2452 root 1.75 will end up in C<< $handle->{tls} >>. Those members might be changed or
2453 root 1.38 mutated later on (for example C<tls> will hold the TLS connection object).
2454    
2455     =item * other object member names are prefixed with an C<_>.
2456    
2457     All object members not explicitly documented (internal use) are prefixed
2458     with an underscore character, so the remaining non-C<_>-namespace is free
2459     for use for subclasses.
2460    
2461     =item * all members not documented here and not prefixed with an underscore
2462     are free to use in subclasses.
2463    
2464     Of course, new versions of AnyEvent::Handle may introduce more "public"
2465 root 1.198 member variables, but that's just life. At least it is documented.
2466 root 1.38
2467     =back
2468    
2469 elmex 1.1 =head1 AUTHOR
2470    
2471 root 1.8 Robin Redeker C<< <elmex at ta-sa.org> >>, Marc Lehmann <schmorp@schmorp.de>.
2472 elmex 1.1
2473     =cut
2474    
2475 root 1.230 1
2476