1Mojo::Reactor::EV(3)  User Contributed Perl Documentation Mojo::Reactor::EV(3)
2
3
4

NAME

6       Mojo::Reactor::EV - Low-level event reactor with libev support
7

SYNOPSIS

9         use Mojo::Reactor::EV;
10
11         # Watch if handle becomes readable or writable
12         my $reactor = Mojo::Reactor::EV->new;
13         $reactor->io($first => sub ($reactor, $writable) {
14           say $writable ? 'First handle is writable' : 'First handle is readable';
15         });
16
17         # Change to watching only if handle becomes writable
18         $reactor->watch($first, 0, 1);
19
20         # Turn file descriptor into handle and watch if it becomes readable
21         my $second = IO::Handle->new_from_fd($fd, 'r');
22         $reactor->io($second => sub ($reactor, $writable) {
23           say $writable ? 'Second handle is writable' : 'Second handle is readable';
24         })->watch($second, 1, 0);
25
26         # Add a timer
27         $reactor->timer(15 => sub ($reactor) {
28           $reactor->remove($first);
29           $reactor->remove($second);
30           say 'Timeout!';
31         });
32
33         # Start reactor if necessary
34         $reactor->start unless $reactor->is_running;
35

DESCRIPTION

37       Mojo::Reactor::EV is a low-level event reactor based on EV (4.32+).
38

EVENTS

40       Mojo::Reactor::EV inherits all events from Mojo::Reactor::Poll.
41

METHODS

43       Mojo::Reactor::EV inherits all methods from Mojo::Reactor::Poll and
44       implements the following new ones.
45
46   again
47         $reactor->again($id);
48         $reactor->again($id, 0.5);
49
50       Restart timer and optionally change the invocation time. Note that this
51       method requires an active timer.
52
53   new
54         my $reactor = Mojo::Reactor::EV->new;
55
56       Construct a new Mojo::Reactor::EV object.
57
58   one_tick
59         $reactor->one_tick;
60
61       Run reactor until an event occurs or no events are being watched
62       anymore.
63
64         # Don't block longer than 0.5 seconds
65         my $id = $reactor->timer(0.5 => sub {});
66         $reactor->one_tick;
67         $reactor->remove($id);
68
69   recurring
70         my $id = $reactor->recurring(0.25 => sub {...});
71
72       Create a new recurring timer, invoking the callback repeatedly after a
73       given amount of time in seconds.
74
75   start
76         $reactor->start;
77
78       Start watching for I/O and timer events, this will block until "stop"
79       is called or no events are being watched anymore.
80
81         # Start reactor only if it is not running already
82         $reactor->start unless $reactor->is_running;
83
84   stop
85         $reactor->stop;
86
87       Stop watching for I/O and timer events.
88
89   timer
90         my $id = $reactor->timer(0.5 => sub {...});
91
92       Create a new timer, invoking the callback after a given amount of time
93       in seconds.
94
95   watch
96         $reactor = $reactor->watch($handle, $readable, $writable);
97
98       Change I/O events to watch handle for with true and false values. Note
99       that this method requires an active I/O watcher.
100
101         # Watch only for readable events
102         $reactor->watch($handle, 1, 0);
103
104         # Watch only for writable events
105         $reactor->watch($handle, 0, 1);
106
107         # Watch for readable and writable events
108         $reactor->watch($handle, 1, 1);
109
110         # Pause watching for events
111         $reactor->watch($handle, 0, 0);
112

SEE ALSO

114       Mojolicious, Mojolicious::Guides, <https://mojolicious.org>.
115
116
117
118perl v5.38.0                      2023-09-11              Mojo::Reactor::EV(3)
Impressum