1IO::Async::Loop(3) User Contributed Perl Documentation IO::Async::Loop(3)
2
3
4
6 "IO::Async::Loop" - core loop of the "IO::Async" framework
7
9 use IO::Async::Stream;
10 use IO::Async::Timer::Countdown;
11
12 use IO::Async::Loop;
13
14 my $loop = IO::Async::Loop->new;
15
16 $loop->add( IO::Async::Timer::Countdown->new(
17 delay => 10,
18 on_expire => sub { print "10 seconds have passed\n" },
19 )->start );
20
21 $loop->add( IO::Async::Stream->new_for_stdin(
22 on_read => sub {
23 my ( $self, $buffref, $eof ) = @_;
24
25 while( $$buffref =~ s/^(.*)\n// ) {
26 print "You typed a line $1\n";
27 }
28
29 return 0;
30 },
31 ) );
32
33 $loop->run;
34
36 This module provides an abstract class which implements the core loop
37 of the IO::Async framework. Its primary purpose is to store a set of
38 IO::Async::Notifier objects or subclasses of them. It handles all of
39 the lower-level set manipulation actions, and leaves the actual IO
40 readiness testing/notification to the concrete class that implements
41 it. It also provides other functionality such as signal handling, child
42 process managing, and timers.
43
44 See also the two bundled Loop subclasses:
45
46 IO::Async::Loop::Select
47 IO::Async::Loop::Poll
48
49 Or other subclasses that may appear on CPAN which are not part of the
50 core IO::Async distribution.
51
52 Ignoring SIGPIPE
53 Since version 0.66 loading this module automatically ignores "SIGPIPE",
54 as it is highly unlikely that the default-terminate action is the best
55 course of action for an IO::Async-based program to take. If at load
56 time the handler disposition is still set as "DEFAULT", it is set to
57 ignore. If already another handler has been placed there by the program
58 code, it will be left undisturbed.
59
61 new
62 $loop = IO::Async::Loop->new
63
64 This function attempts to find a good subclass to use, then calls its
65 constructor. It works by making a list of likely candidate classes,
66 then trying each one in turn, "require"ing the module then calling its
67 "new" method. If either of these operations fails, the next subclass is
68 tried. If no class was successful, then an exception is thrown.
69
70 The constructed object is cached, and will be returned again by a
71 subsequent call. The cache will also be set by a constructor on a
72 specific subclass. This behaviour makes it possible to simply use the
73 normal constructor in a module that wishes to interact with the main
74 program's Loop, such as an integration module for another event system.
75
76 For example, the following two $loop variables will refer to the same
77 object:
78
79 use IO::Async::Loop;
80 use IO::Async::Loop::Poll;
81
82 my $loop_poll = IO::Async::Loop::Poll->new;
83
84 my $loop = IO::Async::Loop->new;
85
86 While it is not advised to do so under normal circumstances, if the
87 program really wishes to construct more than one Loop object, it can
88 call the constructor "really_new", or invoke one of the subclass-
89 specific constructors directly.
90
91 The list of candidates is formed from the following choices, in this
92 order:
93
94 · $ENV{IO_ASYNC_LOOP}
95
96 If this environment variable is set, it should contain a comma-
97 separated list of subclass names. These names may or may not be
98 fully-qualified; if a name does not contain "::" then it will have
99 "IO::Async::Loop::" prepended to it. This allows the end-user to
100 specify a particular choice to fit the needs of his use of a
101 program using IO::Async.
102
103 · $IO::Async::Loop::LOOP
104
105 If this scalar is set, it should contain a comma-separated list of
106 subclass names. These may or may not be fully-qualified, as with
107 the above case. This allows a program author to suggest a loop
108 module to use.
109
110 In cases where the module subclass is a hard requirement, such as
111 GTK programs using "Glib", it would be better to use the module
112 specifically and invoke its constructor directly.
113
114 · IO::Async::OS->LOOP_PREFER_CLASSES
115
116 The IO::Async::OS hints module for the given OS is then consulted
117 to see if it suggests any other module classes specific to the
118 given operating system.
119
120 · $^O
121
122 The module called "IO::Async::Loop::$^O" is tried next. This allows
123 specific OSes, such as the ever-tricky "MSWin32", to provide an
124 implementation that might be more efficient than the generic ones,
125 or even work at all.
126
127 This option is now discouraged in favour of the IO::Async::OS hint
128 instead. At some future point it may be removed entirely, given as
129 currently only "linux" uses it.
130
131 · Poll and Select
132
133 Finally, if no other choice has been made by now, the built-in
134 "Poll" module is chosen. This should always work, but in case it
135 doesn't, the "Select" module will be chosen afterwards as a last-
136 case attempt. If this also fails, then the magic constructor itself
137 will throw an exception.
138
139 If any of the explicitly-requested loop types ($ENV{IO_ASYNC_LOOP} or
140 $IO::Async::Loop::LOOP) fails to load then a warning is printed
141 detailing the error.
142
143 Implementors of new "IO::Async::Loop" subclasses should see the notes
144 about "API_VERSION" below.
145
147 The following methods manage the collection of IO::Async::Notifier
148 objects.
149
150 add
151 $loop->add( $notifier )
152
153 This method adds another notifier object to the stored collection. The
154 object may be a IO::Async::Notifier, or any subclass of it.
155
156 When a notifier is added, any children it has are also added,
157 recursively. In this way, entire sections of a program may be written
158 within a tree of notifier objects, and added or removed on one piece.
159
160 remove
161 $loop->remove( $notifier )
162
163 This method removes a notifier object from the stored collection, and
164 recursively and children notifiers it contains.
165
166 notifiers
167 @notifiers = $loop->notifiers
168
169 Returns a list of all the notifier objects currently stored in the
170 Loop.
171
173 The following methods control the actual run cycle of the loop, and
174 hence the program.
175
176 loop_once
177 $count = $loop->loop_once( $timeout )
178
179 This method performs a single wait loop using the specific subclass's
180 underlying mechanism. If $timeout is undef, then no timeout is applied,
181 and it will wait until an event occurs. The intention of the return
182 value is to indicate the number of callbacks that this loop executed,
183 though different subclasses vary in how accurately they can report
184 this. See the documentation for this method in the specific subclass
185 for more information.
186
187 run
188 @result = $loop->run
189
190 $result = $loop->run
191
192 Runs the actual IO event loop. This method blocks until the "stop"
193 method is called, and returns the result that was passed to "stop". In
194 scalar context only the first result is returned; the others will be
195 discarded if more than one value was provided. This method may be
196 called recursively.
197
198 This method is a recent addition and may not be supported by all the
199 "IO::Async::Loop" subclasses currently available on CPAN.
200
201 stop
202 $loop->stop( @result )
203
204 Stops the inner-most "run" method currently in progress, causing it to
205 return the given @result.
206
207 This method is a recent addition and may not be supported by all the
208 "IO::Async::Loop" subclasses currently available on CPAN.
209
210 loop_forever
211 $loop->loop_forever
212
213 A synonym for "run", though this method does not return a result.
214
215 loop_stop
216 $loop->loop_stop
217
218 A synonym for "stop", though this method does not pass any results.
219
220 post_fork
221 $loop->post_fork
222
223 The base implementation of this method does nothing. It is provided in
224 case some Loop subclasses should take special measures after a "fork()"
225 system call if the main body of the program should survive in both
226 running processes.
227
228 This may be required, for example, in a long-running server daemon that
229 forks multiple copies on startup after opening initial listening
230 sockets. A loop implementation that uses some in-kernel resource that
231 becomes shared after forking (for example, a Linux "epoll" or a BSD
232 "kqueue" filehandle) would need recreating in the new child process
233 before the program can continue.
234
236 The following methods relate to IO::Async::Future objects.
237
238 new_future
239 $future = $loop->new_future
240
241 Returns a new IO::Async::Future instance with a reference to the Loop.
242
243 await
244 $loop->await( $future )
245
246 Blocks until the given future is ready, as indicated by its "is_ready"
247 method. As a convenience it returns the future, to simplify code:
248
249 my @result = $loop->await( $future )->get;
250
251 await_all
252 $loop->await_all( @futures )
253
254 Blocks until all the given futures are ready, as indicated by the
255 "is_ready" method. Equivalent to calling "await" on a
256 "Future->wait_all" except that it doesn't create the surrounding future
257 object.
258
259 delay_future
260 $loop->delay_future( %args )->get
261
262 Returns a new IO::Async::Future instance which will become done at a
263 given point in time. The %args should contain an "at" or "after" key as
264 per the "watch_time" method. The returned future may be cancelled to
265 cancel the timer. At the alloted time the future will succeed with an
266 empty result list.
267
268 timeout_future
269 $loop->timeout_future( %args )->get
270
271 Returns a new IO::Async::Future instance which will fail at a given
272 point in time. The %args should contain an "at" or "after" key as per
273 the "watch_time" method. The returned future may be cancelled to cancel
274 the timer. At the alloted time, the future will fail with the string
275 "Timeout".
276
278 Most of the following methods are higher-level wrappers around base
279 functionality provided by the low-level API documented below. They may
280 be used by IO::Async::Notifier subclasses or called directly by the
281 program.
282
283 The following methods documented with a trailing call to "->get" return
284 Future instances.
285
286 attach_signal
287 $id = $loop->attach_signal( $signal, $code )
288
289 This method adds a new signal handler to watch the given signal. The
290 same signal can be attached to multiple times; its callback functions
291 will all be invoked, in no particular order.
292
293 The returned $id value can be used to identify the signal handler in
294 case it needs to be removed by the "detach_signal" method. Note that
295 this value may be an object reference, so if it is stored, it should be
296 released after it is cancelled, so the object itself can be freed.
297
298 $signal The name of the signal to attach to. This should be a bare name
299 like "TERM".
300
301 $code A CODE reference to the handling callback.
302
303 Attaching to "SIGCHLD" is not recommended because of the way all child
304 processes use it to report their termination. Instead, the
305 "watch_child" method should be used to watch for termination of a given
306 child process. A warning will be printed if "SIGCHLD" is passed here,
307 but in future versions of IO::Async this behaviour may be disallowed
308 altogether.
309
310 See also POSIX for the "SIGname" constants.
311
312 For a more flexible way to use signals from within Notifiers, see
313 instead the IO::Async::Signal object.
314
315 detach_signal
316 $loop->detach_signal( $signal, $id )
317
318 Removes a previously-attached signal handler.
319
320 $signal The name of the signal to remove from. This should be a bare
321 name like "TERM".
322
323 $id The value returned by the "attach_signal" method.
324
325 later
326 $loop->later( $code )
327
328 Schedules a code reference to be invoked as soon as the current round
329 of IO operations is complete.
330
331 The code reference is never invoked immediately, though the loop will
332 not perform any blocking operations between when it is installed and
333 when it is invoked. It may call "select", "poll" or equivalent with a
334 zero-second timeout, and process any currently-pending IO conditions
335 before the code is invoked, but it will not block for a non-zero amount
336 of time.
337
338 This method is implemented using the "watch_idle" method, with the
339 "when" parameter set to "later". It will return an ID value that can be
340 passed to "unwatch_idle" if required.
341
342 spawn_child
343 $loop->spawn_child( %params )
344
345 This method creates a new child process to run a given code block or
346 command. The %params hash takes the following keys:
347
348 command => ARRAY or STRING
349 Either a reference to an array containing the command and its
350 arguments, or a plain string containing the command. This value
351 is passed into perl's "exec" function.
352
353 code => CODE
354 A block of code to execute in the child process. It will be
355 called in scalar context inside an "eval" block.
356
357 setup => ARRAY
358 A reference to an array which gives file descriptors to set up
359 in the child process before running the code or command. See
360 below.
361
362 on_exit => CODE
363 A continuation to be called when the child processes exits. It
364 will be invoked in the following way:
365
366 $on_exit->( $pid, $exitcode, $dollarbang, $dollarat )
367
368 The second argument is passed the plain perl $? value.
369
370 Exactly one of the "command" or "code" keys must be specified.
371
372 If the "command" key is used, the given array or string is executed
373 using the "exec" function.
374
375 If the "code" key is used, the return value will be used as the exit(2)
376 code from the child if it returns (or 255 if it returned "undef" or
377 thows an exception).
378
379 Case | ($exitcode >> 8) | $dollarbang | $dollarat
380 --------------+------------------------+-------------+----------
381 exec succeeds | exit code from program | 0 | ""
382 exec fails | 255 | $! | ""
383 $code returns | return value | $! | ""
384 $code dies | 255 | $! | $@
385
386 It is usually more convenient to use the "open_process" method in
387 simple cases where an external program is being started in order to
388 interact with it via file IO, or even "run_child" when only the final
389 result is required, rather than interaction while it is running.
390
391 "setup" array
392
393 This array gives a list of file descriptor operations to perform in the
394 child process after it has been fork(2)ed from the parent, before
395 running the code or command. It consists of name/value pairs which are
396 ordered; the operations are performed in the order given.
397
398 fdn => ARRAY
399 Gives an operation on file descriptor n. The first element of
400 the array defines the operation to be performed:
401
402 [ 'close' ]
403 The file descriptor will be closed.
404
405 [ 'dup', $io ]
406 The file descriptor will be dup2(2)ed from the given IO
407 handle.
408
409 [ 'open', $mode, $file ]
410 The file descriptor will be opened from the named file in
411 the given mode. The $mode string should be in the form
412 usually given to the "open" function; such as '<' or '>>'.
413
414 [ 'keep' ]
415 The file descriptor will not be closed; it will be left as-
416 is.
417
418 A non-reference value may be passed as a shortcut, where it
419 would contain the name of the operation with no arguments (i.e.
420 for the "close" and "keep" operations).
421
422 IO => ARRAY
423 Shortcut for passing "fdn", where n is the fileno of the IO
424 reference. In this case, the key must be a reference that
425 implements the "fileno" method. This is mostly useful for
426
427 $handle => 'keep'
428
429 fdn => IO
430 A shortcut for the "dup" case given above.
431
432 stdin => ...
433 stdout => ...
434 stderr => ...
435 Shortcuts for "fd0", "fd1" and "fd2" respectively.
436
437 env => HASH
438 A reference to a hash to set as the child process's
439 environment.
440
441 Note that this will entirely set a new environment, completely
442 replacing the existing one. If you want to simply add new keys
443 or change the values of some keys without removing the other
444 existing ones, you can simply copy %ENV into the hash before
445 setting new keys:
446
447 env => {
448 %ENV,
449 ANOTHER => "key here",
450 }
451
452 nice => INT
453 Change the child process's scheduling priority using
454 "POSIX::nice".
455
456 chdir => STRING
457 Change the child process's working directory using "chdir".
458
459 setuid => INT
460 setgid => INT
461 Change the child process's effective UID or GID.
462
463 setgroups => ARRAY
464 Change the child process's groups list, to those groups whose
465 numbers are given in the ARRAY reference.
466
467 On most systems, only the privileged superuser change user or
468 group IDs. IO::Async will NOT check before detaching the child
469 process whether this is the case.
470
471 If setting both the primary GID and the supplementary groups
472 list, it is suggested to set the primary GID first. Moreover,
473 some operating systems may require that the supplementary
474 groups list contains the primary GID.
475
476 If no directions for what to do with "stdin", "stdout" and "stderr" are
477 given, a default of "keep" is implied. All other file descriptors will
478 be closed, unless a "keep" operation is given for them.
479
480 If "setuid" is used, be sure to place it after any other operations
481 that might require superuser privileges, such as "setgid" or opening
482 special files.
483
484 my ( $pipeRd, $pipeWr ) = IO::Async::OS->pipepair;
485 $loop->spawn_child(
486 command => "/usr/bin/my-command",
487
488 setup => [
489 stdin => [ "open", "<", "/dev/null" ],
490 stdout => $pipeWr,
491 stderr => [ "open", ">>", "/var/log/mycmd.log" ],
492 chdir => "/",
493 ]
494
495 on_exit => sub {
496 my ( $pid, $exitcode ) = @_;
497 my $status = ( $exitcode >> 8 );
498 print "Command exited with status $status\n";
499 },
500 );
501
502 $loop->spawn_child(
503 code => sub {
504 do_something; # executes in a child process
505 return 1;
506 },
507
508 on_exit => sub {
509 my ( $pid, $exitcode, $dollarbang, $dollarat ) = @_;
510 my $status = ( $exitcode >> 8 );
511 print "Child process exited with status $status\n";
512 print " OS error was $dollarbang, exception was $dollarat\n";
513 },
514 );
515
516 open_process
517 $process = $loop->open_process( %params )
518
519 Since version 0.72.
520
521 This creates a new child process to run the given code block or
522 command, and attaches filehandles to it that the parent will watch.
523 This method is a light wrapper around constructing a new
524 IO::Async::Process object, adding it to the loop, and returning it.
525
526 The %params hash is passed directly to the IO::Async::Process
527 constructor.
528
529 open_child
530 $pid = $loop->open_child( %params )
531
532 A back-compatibility wrapper to calling "open_process" and returning
533 the PID of the newly-constructed IO::Async::Process instance. The
534 "on_finish" continuation likewise will be invoked with the PID rather
535 than the process instance.
536
537 $on_finish->( $pid, $exitcode )
538
539 Similarly, a "on_error" continuation is accepted, though note its
540 arguments come in a different order to those of the Process's
541 "on_exception":
542
543 $on_error->( $pid, $exitcode, $errno, $exception )
544
545 This method should not be used in new code; instead use "open_process"
546 directly.
547
548 run_process
549 @results = $loop->run_process( %params )->get
550
551 ( $exitcode, $stdout ) = $loop->run_process( ... )->get # by default
552
553 Since version 0.73.
554
555 Creates a new child process to run the given code block or command,
556 optionally capturing its STDOUT and STDERR streams. By default the
557 returned future will yield the exit code and content of the STDOUT
558 stream, but the "capture" argument can be used to alter what is
559 requested and returned.
560
561 command => ARRAY or STRING
562 code => CODE
563 The command or code to run in the child process (as per the
564 "spawn_child" method)
565
566 stdin => STRING
567 Optional. String to pass in to the child process's STDIN
568 stream.
569
570 setup => ARRAY
571 Optional reference to an array to pass to the underlying
572 "spawn" method.
573
574 capture => ARRAY
575 Optional reference to an array giving a list of names of values
576 which should be returned by resolving future. Values will be
577 returned in the same order as in the list. Valid choices are:
578 "exitcode", "stdout", "stderr".
579
580 cancel_signal => STRING
581 Optional. Name (or number) of the signal to send to the process
582 if the returned future is cancelled. Defaults to "TERM". Use
583 empty string or zero disable sending a signal on cancellation.
584
585 fail_on_nonzero => BOOL
586 Optional. If true, the returned future will fail if the process
587 exits with a nonzero status. The failure will contain a
588 message, the "process" category name, and the capture values
589 that were requested.
590
591 Future->fail( $message, process => @captures )
592
593 This method is intended mainly as an IO::Async-compatible replacement
594 for the perl "readpipe" function (`backticks`), allowing it to replace
595
596 my $output = `command here`;
597
598 with
599
600 my ( $exitcode, $output ) = $loop->run_process(
601 command => "command here",
602 )->get;
603
604 my ( $exitcode, $stdout ) = $loop->run_process(
605 command => "/bin/ps",
606 )->get;
607
608 my $status = ( $exitcode >> 8 );
609 print "ps exited with status $status\n";
610
611 run_child
612 $pid = $loop->run_child( %params )
613
614 A back-compatibility wrapper for "run_process", returning the PID and
615 taking an "on_finish" continuation instead of returning a Future.
616
617 This creates a new child process to run the given code block or
618 command, capturing its STDOUT and STDERR streams. When the process
619 exits, a continuation is invoked being passed the exitcode, and content
620 of the streams.
621
622 Takes the following named arguments in addition to those taken by
623 "run_process":
624
625 on_finish => CODE
626 A continuation to be called when the child process exits and
627 closed its STDOUT and STDERR streams. It will be invoked in the
628 following way:
629
630 $on_finish->( $pid, $exitcode, $stdout, $stderr )
631
632 The second argument is passed the plain perl $? value.
633
634 This method should not be used in new code; instead use "run_process"
635 directly.
636
637 resolver
638 $loop->resolver
639
640 Returns the internally-stored IO::Async::Resolver object, used for name
641 resolution operations by the "resolve", "connect" and "listen" methods.
642
643 set_resolver
644 $loop->set_resolver( $resolver )
645
646 Sets the internally-stored IO::Async::Resolver object. In most cases
647 this method should not be required, but it may be used to provide an
648 alternative resolver for special use-cases.
649
650 resolve
651 @result = $loop->resolve( %params )->get
652
653 This method performs a single name resolution operation. It uses an
654 internally-stored IO::Async::Resolver object. For more detail, see the
655 "resolve" method on the IO::Async::Resolver class.
656
657 connect
658 $handle|$socket = $loop->connect( %params )->get
659
660 This method performs a non-blocking connection to a given address or
661 set of addresses, returning a IO::Async::Future which represents the
662 operation. On completion, the future will yield the connected socket
663 handle, or the given IO::Async::Handle object.
664
665 There are two modes of operation. Firstly, a list of addresses can be
666 provided which will be tried in turn. Alternatively as a convenience,
667 if a host and service name are provided instead of a list of addresses,
668 these will be resolved using the underlying loop's "resolve" method
669 into the list of addresses.
670
671 When attempting to connect to any among a list of addresses, there may
672 be failures among the first attempts, before a valid connection is
673 made. For example, the resolver may have returned some IPv6 addresses,
674 but only IPv4 routes are valid on the system. In this case, the first
675 connect(2) syscall will fail. This isn't yet a fatal error, if there
676 are more addresses to try, perhaps some IPv4 ones.
677
678 For this reason, it is possible that the operation eventually succeeds
679 even though some system calls initially fail. To be aware of individual
680 failures, the optional "on_fail" callback can be used. This will be
681 invoked on each individual socket(2) or connect(2) failure, which may
682 be useful for debugging or logging.
683
684 Because this module simply uses the "getaddrinfo" resolver, it will be
685 fully IPv6-aware if the underlying platform's resolver is. This allows
686 programs to be fully IPv6-capable.
687
688 In plain address mode, the %params hash takes the following keys:
689
690 addrs => ARRAY
691 Reference to an array of (possibly-multiple) address structures
692 to attempt to connect to. Each should be in the layout
693 described for "addr". Such a layout is returned by the
694 "getaddrinfo" named resolver.
695
696 addr => HASH or ARRAY
697 Shortcut for passing a single address to connect to; it may be
698 passed directly with this key, instead of in another array on
699 its own. This should be in a format recognised by
700 IO::Async::OS's "extract_addrinfo" method.
701
702 This example shows how to use the "Socket" functions to
703 construct one for TCP port 8001 on address 10.0.0.1:
704
705 $loop->connect(
706 addr => {
707 family => "inet",
708 socktype => "stream",
709 port => 8001,
710 ip => "10.0.0.1",
711 },
712 ...
713 );
714
715 This example shows another way to connect to a UNIX socket at
716 echo.sock.
717
718 $loop->connect(
719 addr => {
720 family => "unix",
721 socktype => "stream",
722 path => "echo.sock",
723 },
724 ...
725 );
726
727 local_addrs => ARRAY
728 local_addr => HASH or ARRAY
729 Optional. Similar to the "addrs" or "addr" parameters, these
730 specify a local address or set of addresses to bind(2) the
731 socket to before connect(2)ing it.
732
733 When performing the resolution step too, the "addrs" or "addr" keys are
734 ignored, and instead the following keys are taken:
735
736 host => STRING
737 service => STRING
738 The hostname and service name to connect to.
739
740 local_host => STRING
741 local_service => STRING
742 Optional. The hostname and/or service name to bind(2) the
743 socket to locally before connecting to the peer.
744
745 family => INT
746 socktype => INT
747 protocol => INT
748 flags => INT
749 Optional. Other arguments to pass along with "host" and
750 "service" to the "getaddrinfo" call.
751
752 socktype => STRING
753 Optionally may instead be one of the values 'stream', 'dgram'
754 or 'raw' to stand for "SOCK_STREAM", "SOCK_DGRAM" or
755 "SOCK_RAW". This utility is provided to allow the caller to
756 avoid a separate "use Socket" only for importing these
757 constants.
758
759 It is necessary to pass the "socktype" hint to the resolver when
760 resolving the host/service names into an address, as some OS's
761 "getaddrinfo" functions require this hint. A warning is emitted if
762 neither "socktype" nor "protocol" hint is defined when performing a
763 "getaddrinfo" lookup. To avoid this warning while still specifying no
764 particular "socktype" hint (perhaps to invoke some OS-specific
765 behaviour), pass 0 as the "socktype" value.
766
767 In either case, it also accepts the following arguments:
768
769 handle => IO::Async::Handle
770 Optional. If given a IO::Async::Handle object or a subclass
771 (such as IO::Async::Stream or IO::Async::Socket its handle will
772 be set to the newly-connected socket on success, and that
773 handle used as the result of the future instead.
774
775 on_fail => CODE
776 Optional. After an individual socket(2) or connect(2) syscall
777 has failed, this callback is invoked to inform of the error. It
778 is passed the name of the syscall that failed, the arguments
779 that were passed to it, and the error it generated. I.e.
780
781 $on_fail->( "socket", $family, $socktype, $protocol, $! );
782
783 $on_fail->( "bind", $sock, $address, $! );
784
785 $on_fail->( "connect", $sock, $address, $! );
786
787 Because of the "try all" nature when given a list of multiple
788 addresses, this callback may be invoked multiple times, even
789 before an eventual success.
790
791 This method accepts an "extensions" parameter; see the "EXTENSIONS"
792 section below.
793
794 connect (void)
795 $loop->connect( %params )
796
797 When not returning a future, additional parameters can be given
798 containing the continuations to invoke on success or failure.
799
800 on_connected => CODE
801 A continuation that is invoked on a successful connect(2) call
802 to a valid socket. It will be passed the connected socket
803 handle, as an "IO::Socket" object.
804
805 $on_connected->( $handle )
806
807 on_stream => CODE
808 An alternative to "on_connected", a continuation that is passed
809 an instance of IO::Async::Stream when the socket is connected.
810 This is provided as a convenience for the common case that a
811 Stream object is required as the transport for a Protocol
812 object.
813
814 $on_stream->( $stream )
815
816 on_socket => CODE
817 Similar to "on_stream", but constructs an instance of
818 IO::Async::Socket. This is most useful for "SOCK_DGRAM" or
819 "SOCK_RAW" sockets.
820
821 $on_socket->( $socket )
822
823 on_connect_error => CODE
824 A continuation that is invoked after all of the addresses have
825 been tried, and none of them succeeded. It will be passed the
826 most significant error that occurred, and the name of the
827 operation it occurred in. Errors from the connect(2) syscall
828 are considered most significant, then bind(2), then finally
829 socket(2).
830
831 $on_connect_error->( $syscall, $! )
832
833 on_resolve_error => CODE
834 A continuation that is invoked when the name resolution attempt
835 fails. This is invoked in the same way as the "on_error"
836 continuation for the "resolve" method.
837
838 listen
839 $listener = $loop->listen( %params )->get
840
841 This method sets up a listening socket and arranges for an acceptor
842 callback to be invoked each time a new connection is accepted on the
843 socket. Internally it creates an instance of IO::Async::Listener and
844 adds it to the Loop if not given one in the arguments.
845
846 Addresses may be given directly, or they may be looked up using the
847 system's name resolver, or a socket handle may be given directly.
848
849 If multiple addresses are given, or resolved from the service and
850 hostname, then each will be attempted in turn until one succeeds.
851
852 In named resolver mode, the %params hash takes the following keys:
853
854 service => STRING
855 The service name to listen on.
856
857 host => STRING
858 The hostname to listen on. Optional. Will listen on all
859 addresses if not supplied.
860
861 family => INT
862 socktype => INT
863 protocol => INT
864 flags => INT
865 Optional. Other arguments to pass along with "host" and
866 "service" to the "getaddrinfo" call.
867
868 socktype => STRING
869 Optionally may instead be one of the values 'stream', 'dgram'
870 or 'raw' to stand for "SOCK_STREAM", "SOCK_DGRAM" or
871 "SOCK_RAW". This utility is provided to allow the caller to
872 avoid a separate "use Socket" only for importing these
873 constants.
874
875 It is necessary to pass the "socktype" hint to the resolver when
876 resolving the host/service names into an address, as some OS's
877 "getaddrinfo" functions require this hint. A warning is emitted if
878 neither "socktype" nor "protocol" hint is defined when performing a
879 "getaddrinfo" lookup. To avoid this warning while still specifying no
880 particular "socktype" hint (perhaps to invoke some OS-specific
881 behaviour), pass 0 as the "socktype" value.
882
883 In plain address mode, the %params hash takes the following keys:
884
885 addrs => ARRAY
886 Reference to an array of (possibly-multiple) address structures
887 to attempt to listen on. Each should be in the layout described
888 for "addr". Such a layout is returned by the "getaddrinfo"
889 named resolver.
890
891 addr => ARRAY
892 Shortcut for passing a single address to listen on; it may be
893 passed directly with this key, instead of in another array of
894 its own. This should be in a format recognised by
895 IO::Async::OS's "extract_addrinfo" method. See also the
896 "EXAMPLES" section.
897
898 In direct socket handle mode, the following keys are taken:
899
900 handle => IO
901 The listening socket handle.
902
903 In either case, the following keys are also taken:
904
905 on_fail => CODE
906 Optional. A callback that is invoked if a syscall fails while
907 attempting to create a listening sockets. It is passed the name
908 of the syscall that failed, the arguments that were passed to
909 it, and the error generated. I.e.
910
911 $on_fail->( "socket", $family, $socktype, $protocol, $! );
912
913 $on_fail->( "sockopt", $sock, $optname, $optval, $! );
914
915 $on_fail->( "bind", $sock, $address, $! );
916
917 $on_fail->( "listen", $sock, $queuesize, $! );
918
919 queuesize => INT
920 Optional. The queue size to pass to the listen(2) calls. If not
921 supplied, then 3 will be given instead.
922
923 reuseaddr => BOOL
924 Optional. If true or not supplied then the "SO_REUSEADDR"
925 socket option will be set. To prevent this, pass a false value
926 such as 0.
927
928 v6only => BOOL
929 Optional. If defined, sets or clears the "IPV6_V6ONLY" socket
930 option on "PF_INET6" sockets. This option disables the ability
931 of "PF_INET6" socket to accept connections from "AF_INET"
932 addresses. Not all operating systems allow this option to be
933 disabled.
934
935 An alternative which gives more control over the listener, is to create
936 the IO::Async::Listener object directly and add it explicitly to the
937 Loop.
938
939 This method accepts an "extensions" parameter; see the "EXTENSIONS"
940 section below.
941
942 listen (void)
943 $loop->listen( %params )
944
945 When not returning a future, additional parameters can be given
946 containing the continuations to invoke on success or failure.
947
948 on_notifier => CODE
949 Optional. A callback that is invoked when the Listener object
950 is ready to receive connections. The callback is passed the
951 Listener object itself.
952
953 $on_notifier->( $listener )
954
955 If this callback is required, it may instead be better to
956 construct the Listener object directly.
957
958 on_listen => CODE
959 Optional. A callback that is invoked when the listening socket
960 is ready. Typically this would be used in the name resolver
961 case, in order to inspect the socket's sockname address, or
962 otherwise inspect the filehandle.
963
964 $on_listen->( $socket )
965
966 on_listen_error => CODE
967 A continuation this is invoked after all of the addresses have
968 been tried, and none of them succeeded. It will be passed the
969 most significant error that occurred, and the name of the
970 operation it occurred in. Errors from the listen(2) syscall are
971 considered most significant, then bind(2), then sockopt(2),
972 then finally socket(2).
973
974 on_resolve_error => CODE
975 A continuation that is invoked when the name resolution attempt
976 fails. This is invoked in the same way as the "on_error"
977 continuation for the "resolve" method.
978
980 Because the Magic Constructor searches for OS-specific subclasses of
981 the Loop, several abstractions of OS services are provided, in case
982 specific OSes need to give different implementations on that OS.
983
984 signame2num
985 $signum = $loop->signame2num( $signame )
986
987 Legacy wrappers around IO::Async::OS functions.
988
989 time
990 $time = $loop->time
991
992 Returns the current UNIX time in fractional seconds. This is currently
993 equivalent to "Time::HiRes::time" but provided here as a utility for
994 programs to obtain the time current used by IO::Async for its own
995 timing purposes.
996
997 fork
998 $pid = $loop->fork( %params )
999
1000 This method creates a new child process to run a given code block,
1001 returning its process ID.
1002
1003 code => CODE
1004 A block of code to execute in the child process. It will be
1005 called in scalar context inside an "eval" block. The return
1006 value will be used as the exit(2) code from the child if it
1007 returns (or 255 if it returned "undef" or thows an exception).
1008
1009 on_exit => CODE
1010 A optional continuation to be called when the child processes
1011 exits. It will be invoked in the following way:
1012
1013 $on_exit->( $pid, $exitcode )
1014
1015 The second argument is passed the plain perl $? value.
1016
1017 This key is optional; if not supplied, the calling code should
1018 install a handler using the "watch_child" method.
1019
1020 keep_signals => BOOL
1021 Optional boolean. If missing or false, any CODE references in
1022 the %SIG hash will be removed and restored back to "DEFAULT" in
1023 the child process. If true, no adjustment of the %SIG hash will
1024 be performed.
1025
1026 create_thread
1027 $tid = $loop->create_thread( %params )
1028
1029 This method creates a new (non-detached) thread to run the given code
1030 block, returning its thread ID.
1031
1032 code => CODE
1033 A block of code to execute in the thread. It is called in the
1034 context given by the "context" argument, and its return value
1035 will be available to the "on_joined" callback. It is called
1036 inside an "eval" block; if it fails the exception will be
1037 caught.
1038
1039 context => "scalar" | "list" | "void"
1040 Optional. Gives the calling context that "code" is invoked in.
1041 Defaults to "scalar" if not supplied.
1042
1043 on_joined => CODE
1044 Callback to invoke when the thread function returns or throws
1045 an exception. If it returned, this callback will be invoked
1046 with its result
1047
1048 $on_joined->( return => @result )
1049
1050 If it threw an exception the callback is invoked with the value
1051 of $@
1052
1053 $on_joined->( died => $! )
1054
1056 As "IO::Async::Loop" is an abstract base class, specific subclasses of
1057 it are required to implement certain methods that form the base level
1058 of functionality. They are not recommended for applications to use; see
1059 instead the various event objects or higher level methods listed above.
1060
1061 These methods should be considered as part of the interface contract
1062 required to implement a "IO::Async::Loop" subclass.
1063
1064 API_VERSION
1065 IO::Async::Loop->API_VERSION
1066
1067 This method will be called by the magic constructor on the class before
1068 it is constructed, to ensure that the specific implementation will
1069 support the required API. This method should return the API version
1070 that the loop implementation supports. The magic constructor will use
1071 that class, provided it declares a version at least as new as the
1072 version documented here.
1073
1074 The current API version is 0.49.
1075
1076 This method may be implemented using "constant"; e.g
1077
1078 use constant API_VERSION => '0.49';
1079
1080 watch_io
1081 $loop->watch_io( %params )
1082
1083 This method installs callback functions which will be invoked when the
1084 given IO handle becomes read- or write-ready.
1085
1086 The %params hash takes the following keys:
1087
1088 handle => IO
1089 The IO handle to watch.
1090
1091 on_read_ready => CODE
1092 Optional. A CODE reference to call when the handle becomes
1093 read-ready.
1094
1095 on_write_ready => CODE
1096 Optional. A CODE reference to call when the handle becomes
1097 write-ready.
1098
1099 There can only be one filehandle of any given fileno registered at any
1100 one time. For any one filehandle, there can only be one read-readiness
1101 and/or one write-readiness callback at any one time. Registering a new
1102 one will remove an existing one of that type. It is not required that
1103 both are provided.
1104
1105 Applications should use a IO::Async::Handle or IO::Async::Stream
1106 instead of using this method.
1107
1108 If the filehandle does not yet have the "O_NONBLOCK" flag set, it will
1109 be enabled by this method. This will ensure that any subsequent
1110 "sysread", "syswrite", or similar will not block on the filehandle.
1111
1112 unwatch_io
1113 $loop->unwatch_io( %params )
1114
1115 This method removes a watch on an IO handle which was previously
1116 installed by "watch_io".
1117
1118 The %params hash takes the following keys:
1119
1120 handle => IO
1121 The IO handle to remove the watch for.
1122
1123 on_read_ready => BOOL
1124 If true, remove the watch for read-readiness.
1125
1126 on_write_ready => BOOL
1127 If true, remove the watch for write-readiness.
1128
1129 Either or both callbacks may be removed at once. It is not an error to
1130 attempt to remove a callback that is not present. If both callbacks
1131 were provided to the "watch_io" method and only one is removed by this
1132 method, the other shall remain.
1133
1134 watch_signal
1135 $loop->watch_signal( $signal, $code )
1136
1137 This method adds a new signal handler to watch the given signal.
1138
1139 $signal The name of the signal to watch to. This should be a bare name
1140 like "TERM".
1141
1142 $code A CODE reference to the handling callback.
1143
1144 There can only be one callback per signal name. Registering a new one
1145 will remove an existing one.
1146
1147 Applications should use a IO::Async::Signal object, or call
1148 "attach_signal" instead of using this method.
1149
1150 This and "unwatch_signal" are optional; a subclass may implement
1151 neither, or both. If it implements neither then signal handling will be
1152 performed by the base class using a self-connected pipe to interrupt
1153 the main IO blocking.
1154
1155 unwatch_signal
1156 $loop->unwatch_signal( $signal )
1157
1158 This method removes the signal callback for the given signal.
1159
1160 $signal The name of the signal to watch to. This should be a bare name
1161 like "TERM".
1162
1163 watch_time
1164 $id = $loop->watch_time( %args )
1165
1166 This method installs a callback which will be called at the specified
1167 time. The time may either be specified as an absolute value (the "at"
1168 key), or as a delay from the time it is installed (the "after" key).
1169
1170 The returned $id value can be used to identify the timer in case it
1171 needs to be cancelled by the "unwatch_time" method. Note that this
1172 value may be an object reference, so if it is stored, it should be
1173 released after it has been fired or cancelled, so the object itself can
1174 be freed.
1175
1176 The %params hash takes the following keys:
1177
1178 at => NUM
1179 The absolute system timestamp to run the event.
1180
1181 after => NUM
1182 The delay after now at which to run the event, if "at" is not
1183 supplied. A zero or negative delayed timer should be executed
1184 as soon as possible; the next time the "loop_once" method is
1185 invoked.
1186
1187 now => NUM
1188 The time to consider as now if calculating an absolute time
1189 based on "after"; defaults to "time()" if not specified.
1190
1191 code => CODE
1192 CODE reference to the continuation to run at the allotted time.
1193
1194 Either one of "at" or "after" is required.
1195
1196 For more powerful timer functionality as a IO::Async::Notifier (so it
1197 can be used as a child within another Notifier), see instead the
1198 IO::Async::Timer object and its subclasses.
1199
1200 These *_time methods are optional; a subclass may implement neither or
1201 both of them. If it implements neither, then the base class will manage
1202 a queue of timer events. This queue should be handled by the
1203 "loop_once" method implemented by the subclass, using the
1204 "_adjust_timeout" and "_manage_queues" methods.
1205
1206 This is the newer version of the API, replacing "enqueue_timer". It is
1207 unspecified how this method pair interacts with the older
1208 "enqueue/requeue/cancel_timer" triplet.
1209
1210 unwatch_time
1211 $loop->unwatch_time( $id )
1212
1213 Removes a timer callback previously created by "watch_time".
1214
1215 This is the newer version of the API, replacing "cancel_timer". It is
1216 unspecified how this method pair interacts with the older
1217 "enqueue/requeue/cancel_timer" triplet.
1218
1219 enqueue_timer
1220 $id = $loop->enqueue_timer( %params )
1221
1222 An older version of "watch_time". This method should not be used in new
1223 code but is retained for legacy purposes. For simple watch/unwatch
1224 behaviour use instead the new "watch_time" method; though note it has
1225 differently-named arguments. For requeueable timers, consider using an
1226 IO::Async::Timer::Countdown or IO::Async::Timer::Absolute instead.
1227
1228 cancel_timer
1229 $loop->cancel_timer( $id )
1230
1231 An older version of "unwatch_time". This method should not be used in
1232 new code but is retained for legacy purposes.
1233
1234 requeue_timer
1235 $newid = $loop->requeue_timer( $id, %params )
1236
1237 Reschedule an existing timer, moving it to a new time. The old timer is
1238 removed and will not be invoked.
1239
1240 The %params hash takes the same keys as "enqueue_timer", except for the
1241 "code" argument.
1242
1243 The requeue operation may be implemented as a cancel + enqueue, which
1244 may mean the ID changes. Be sure to store the returned $newid value if
1245 it is required.
1246
1247 This method should not be used in new code but is retained for legacy
1248 purposes. For requeueable, consider using an
1249 IO::Async::Timer::Countdown or IO::Async::Timer::Absolute instead.
1250
1251 watch_idle
1252 $id = $loop->watch_idle( %params )
1253
1254 This method installs a callback which will be called at some point in
1255 the near future.
1256
1257 The %params hash takes the following keys:
1258
1259 when => STRING
1260 Specifies the time at which the callback will be invoked. See
1261 below.
1262
1263 code => CODE
1264 CODE reference to the continuation to run at the allotted time.
1265
1266 The "when" parameter defines the time at which the callback will later
1267 be invoked. Must be one of the following values:
1268
1269 later Callback is invoked after the current round of IO events have
1270 been processed by the loop's underlying "loop_once" method.
1271
1272 If a new idle watch is installed from within a "later"
1273 callback, the installed one will not be invoked during this
1274 round. It will be deferred for the next time "loop_once" is
1275 called, after any IO events have been handled.
1276
1277 If there are pending idle handlers, then the "loop_once" method will
1278 use a zero timeout; it will return immediately, having processed any IO
1279 events and idle handlers.
1280
1281 The returned $id value can be used to identify the idle handler in case
1282 it needs to be removed, by calling the "unwatch_idle" method. Note this
1283 value may be a reference, so if it is stored it should be released
1284 after the callback has been invoked or cancled, so the referrant itself
1285 can be freed.
1286
1287 This and "unwatch_idle" are optional; a subclass may implement neither,
1288 or both. If it implements neither then idle handling will be performed
1289 by the base class, using the "_adjust_timeout" and "_manage_queues"
1290 methods.
1291
1292 unwatch_idle
1293 $loop->unwatch_idle( $id )
1294
1295 Cancels a previously-installed idle handler.
1296
1297 watch_child
1298 $loop->watch_child( $pid, $code )
1299
1300 This method adds a new handler for the termination of the given child
1301 process PID, or all child processes.
1302
1303 $pid The PID to watch. Will report on all child processes if this is
1304 0.
1305
1306 $code A CODE reference to the exit handler. It will be invoked as
1307
1308 $code->( $pid, $? )
1309
1310 The second argument is passed the plain perl $? value.
1311
1312 After invocation, the handler for a PID-specific watch is automatically
1313 removed. The all-child watch will remain until it is removed by
1314 "unwatch_child".
1315
1316 This and "unwatch_child" are optional; a subclass may implement
1317 neither, or both. If it implements neither then child watching will be
1318 performed by using "watch_signal" to install a "SIGCHLD" handler, which
1319 will use "waitpid" to look for exited child processes.
1320
1321 If both a PID-specific and an all-process watch are installed, there is
1322 no ordering guarantee as to which will be called first.
1323
1324 unwatch_child
1325 $loop->unwatch_child( $pid )
1326
1327 This method removes a watch on an existing child process PID.
1328
1330 The following methods are provided to access internal features which
1331 are required by specific subclasses to implement the loop
1332 functionality. The use cases of each will be documented in the above
1333 section.
1334
1335 _adjust_timeout
1336 $loop->_adjust_timeout( \$timeout )
1337
1338 Shortens the timeout value passed in the scalar reference if it is
1339 longer in seconds than the time until the next queued event on the
1340 timer queue. If there are pending idle handlers, the timeout is reduced
1341 to zero.
1342
1343 _manage_queues
1344 $loop->_manage_queues
1345
1346 Checks the timer queue for callbacks that should have been invoked by
1347 now, and runs them all, removing them from the queue. It also invokes
1348 all of the pending idle handlers. Any new idle handlers installed by
1349 these are not invoked yet; they will wait for the next time this method
1350 is called.
1351
1353 An Extension is a Perl module that provides extra methods in the
1354 "IO::Async::Loop" or other packages. They are intended to provide extra
1355 functionality that easily integrates with the rest of the code.
1356
1357 Certain base methods take an "extensions" parameter; an ARRAY reference
1358 containing a list of extension names. If such a list is passed to a
1359 method, it will immediately call a method whose name is that of the
1360 base method, prefixed by the first extension name in the list,
1361 separated by "_". If the "extensions" list contains more extension
1362 names, it will be passed the remaining ones in another "extensions"
1363 parameter.
1364
1365 For example,
1366
1367 $loop->connect(
1368 extensions => [qw( FOO BAR )],
1369 %args
1370 )
1371
1372 will become
1373
1374 $loop->FOO_connect(
1375 extensions => [qw( BAR )],
1376 %args
1377 )
1378
1379 This is provided so that extension modules, such as IO::Async::SSL can
1380 easily be invoked indirectly, by passing extra arguments to "connect"
1381 methods or similar, without needing every module to be aware of the
1382 "SSL" extension. This functionality is generic and not limited to
1383 "SSL"; other extensions may also use it.
1384
1385 The following methods take an "extensions" parameter:
1386
1387 $loop->connect
1388 $loop->listen
1389
1390 If an extension "listen" method is invoked, it will be passed a
1391 "listener" parameter even if one was not provided to the original
1392 "$loop->listen" call, and it will not receive any of the "on_*" event
1393 callbacks. It should use the "acceptor" parameter on the "listener"
1394 object.
1395
1397 A well-behaved IO::Async program should spend almost all of its time
1398 blocked on input using the underlying "IO::Async::Loop" instance. The
1399 stall watchdog is an optional debugging feature to help detect CPU
1400 spinlocks and other bugs, where control is not returned to the loop
1401 every so often.
1402
1403 If the watchdog is enabled and an event handler consumes more than a
1404 given amount of real time before returning to the event loop, it will
1405 be interrupted by printing a stack trace and terminating the program.
1406 The watchdog is only in effect while the loop itself is not blocking;
1407 it won't fail simply because the loop instance is waiting for input or
1408 timers.
1409
1410 It is implemented using "SIGALRM", so if enabled, this signal will no
1411 longer be available to user code. (Though in any case, most uses of
1412 "alarm()" and "SIGALRM" are better served by one of the
1413 IO::Async::Timer subclasses).
1414
1415 The following environment variables control its behaviour.
1416
1417 IO_ASYNC_WATCHDOG => BOOL
1418 Enables the stall watchdog if set to a non-zero value.
1419
1420 IO_ASYNC_WATCHDOG_INTERVAL => INT
1421 Watchdog interval, in seconds, to pass to the alarm(2) call.
1422 Defaults to 10 seconds.
1423
1424 IO_ASYNC_WATCHDOG_SIGABRT => BOOL
1425 If enabled, the watchdog signal handler will raise a "SIGABRT",
1426 which usually has the effect of breaking out of a running program
1427 in debuggers such as gdb. If not set then the process is terminated
1428 by throwing an exception with "die".
1429
1431 Paul Evans <leonerd@leonerd.org.uk>
1432
1433
1434
1435perl v5.30.1 2020-01-30 IO::Async::Loop(3)