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