ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent/Handle.pm
Revision: 1.150
Committed: Thu Jul 16 04:16:25 2009 UTC (14 years, 10 months ago) by root
Branch: MAIN
Changes since 1.149: +18 -15 lines
Log Message:
*** empty log message ***

File Contents

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