From: Charles McGarvey Date: Sun, 17 Jun 2018 23:17:06 +0000 (-0600) Subject: add reactor usage example X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=e9a895bf42ef9b706aba2d2770ae61dad28ea9a4;p=chaz%2Ftalk-event-driven-programming-in-perl add reactor usage example --- diff --git a/css/common.css b/css/common.css index 525370d..8689442 100644 --- a/css/common.css +++ b/css/common.css @@ -94,6 +94,9 @@ .big { font-size: 150%; } +.small { + font-size: 50%; +} .remark-code-line-highlighted { background-color: rgba(200,200,255,.25); diff --git a/css/slides.css b/css/slides.css index e32cb10..eb366c3 100644 --- a/css/slides.css +++ b/css/slides.css @@ -44,7 +44,11 @@ font-size: 34px; } -.ex-basicreactor .perl { +.ex-basicreactor1 .perl { + font-size: 36px; +} + +.ex-basicreactor2 .perl { font-size: 38px; } diff --git a/img/helpdesk.jpg b/img/helpdesk.jpg new file mode 100644 index 0000000..ecfb881 Binary files /dev/null and b/img/helpdesk.jpg differ diff --git a/slides.html b/slides.html index 51f9101..8904bd2 100644 --- a/slides.html +++ b/slides.html @@ -70,6 +70,16 @@ At it's core, event-driven programming is this simple. But there are some complications and things to knows, which is why this talk exists. +--- +class: center, middle + +![Help desk](img/helpdesk.jpg) + +.small[ +Image by Soniachat8. +This image is licensed under the [Creative Commons Attribution-Share Alike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/deed.en) license. +] + --- name: graph-eventloop class: center, middle @@ -378,9 +388,13 @@ class: syscalls - [`clock_gettime`](http://man.he.net/man2/clock_gettime) - What time is it now? --- +class: center, middle ## Reactor pattern +--- +## Reactor pattern + .big[ - Queues events asynchronously. - Demultiplexes and dispatches synchronously. @@ -395,9 +409,26 @@ class: center, middle ![Reactor](img/reactor.svg) --- -class: ex-basicreactor +class: ex-basicreactor1 -## The basic reactor +## Using a reactor + +```perl +my $reactor = My::Reactor->new; + +# Set up event handlers +$reactor->slurp_file($filepath, \&handle_slurp_event); +$reactor->timer(5, \&handle_timer_event); +$reactor->listen($socket, \&handle_new_connect_event); +... + +$reactor->run_loop; +``` + +--- +class: ex-basicreactor2 + +## The basic reactor implementation ```perl our $timers = [...]; @@ -414,9 +445,9 @@ while (1) { ``` --- -class: ex-basicreactor +class: ex-basicreactor2 -## The basic reactor +## The basic reactor implementation ```perl our $timers = [...]; @@ -445,6 +476,10 @@ while (1) { - [`Mojo::Reactor::Poll`](https://metacpan.org/source/Mojo::Reactor::Poll) ] +??? +These links, which will be available to you with the slides, link directly to the source code of these modules on +metacpan so you can take a look at how they work. + --- name: not-all-roses class: center, middle