POE

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    2 Favorites & 1 Group

    POE - Presentation Transcript

    1. POE Stefano Rodighiero OpenExp 2006
    2. Perl Object Environment POE - A Perl Object Environment
    3. ? POE - A Perl Object Environment
    4. Framework POE - A Perl Object Environment
    5. Event driven POE - A Perl Object Environment
    6. Multitasking Cooperativo POE - A Perl Object Environment
    7. Single thread POE - A Perl Object Environment
    8. Networking POE - A Perl Object Environment
    9. System administration POE - A Perl Object Environment
    10. GUI POE - A Perl Object Environment
    11. POE - A Perl Object Environment
    12. Component Wheel “Architettura” Session Kernel POE - A Perl Object Environment
    13. Component Wheel Dispatch di eventi Session Kernel POE - A Perl Object Environment
    14. Component Wheel Risponde agli eventi Session Kernel POE - A Perl Object Environment
    15. Component “Plugin” per sessioni, incapsula insiemi di Wheel gestori di eventi Session POE::Wheel::FollowTail POE::Wheel::Run Kernel POE - A Perl Object Environment
    16. Component Wheel POE::Component::IRC POE::Component::Server::TCP POE::Component::Server::SimpleHTTP …CPAN… Session Kernel POE - A Perl Object Environment
    17. POE - A Perl Object Environment
    18. Un programma tipico • Istanzia una o più sessioni • Esplicitamente, eventualmente usando delle Wheel • Implicitamente, con Componenti già pronti • POE::Kernel->run() POE - A Perl Object Environment
    19. sub POE::Kernel::TRACE_EVENTS() { 1 } POE - A Perl Object Environment
    20. use POE; POE - A Perl Object Environment
    21. for ( 1 .. 3 ) { POE::Session -> create( inline_states => { _start => sub { print \"Start!\\n\" }, _stop => sub { print \"Stop!\\n\" } } ); } POE - A Perl Object Environment
    22. POE::Kernel->run(); POE - A Perl Object Environment
    23. _start Session Kernel POE - A Perl Object Environment
    24. _start Session _start => sub { print \"Start!\\n\" Kernel } POE - A Perl Object Environment
    25. Passaggio di messaggi Accoda un evento, da inoltrare post() alla session specificata Accoda un evento, da inoltrare yield() alla session stessa Invoca - in maniera sincrona - un evento per una call() sessione specificata POE - A Perl Object Environment
    26. Passaggio di messaggi post()/yield() POE - A Perl Object Environment
    27. Passaggio di messaggi call() POE - A Perl Object Environment
    28. Comunicazione tra sessioni POE - A Perl Object Environment
    29. # Sessione Babbo Natale POE::Session->create( inline_states => { _start => sub { print \"Oh oh oh!\\n\"; $poe_kernel->alias_set( \"Santa\" ); }, lettera => sub { print \"Lettera da \" . $poe_kernel->alias_list( $_[SENDER] ); } } ); POE - A Perl Object Environment
    30. # Sessione Babbo Natale POE::Session->create( inline_states => { _start => sub { print \"Oh oh oh!\\n\"; $poe_kernel->alias_set( \"Santa\" ); }, lettera => sub { print \"Lettera da \" . $poe_kernel->alias_list( $_[SENDER] ); } } ); POE - A Perl Object Environment
    31. # Sessione Babbo Natale POE::Session->create( inline_states => { _start => sub { print \"Oh oh oh!\\n\"; $poe_kernel->alias_set( \"Santa\" ); }, lettera => sub { print \"Lettera da \" . $poe_kernel->alias_list( $_[SENDER] ); } } ); POE - A Perl Object Environment
    32. # Sessione Babbo Natale POE::Session->create( inline_states => { _start => sub { print \"Oh oh oh!\\n\"; $poe_kernel->alias_set( \"Santa\" ); }, lettera => sub { print \"Lettera da \" . $poe_kernel->alias_list( $_[SENDER] ); } } ); POE - A Perl Object Environment
    33. # Sessione bimbo POE::Session->create( inline_states => { _start => sub { $poe_kernel->alias_set( \"Paolino\" ); $poe_kernel->post( \"Santa\" => 'lettera' ); }, } ); POE - A Perl Object Environment
    34. # Sessione bimbo POE::Session->create( inline_states => { _start => sub { $poe_kernel->alias_set( \"Paolino\" ); $poe_kernel->post( \"Santa\" => 'lettera' ); }, } ); POE - A Perl Object Environment
    35. Babbo Natale _start Kernel Paolino _start POE - A Perl Object Environment
    36. Babbo Natale Kernel Paolino post( \"Santa\", \"lettera\" ) POE - A Perl Object Environment
    37. lettera Babbo Natale Kernel Paolino POE - A Perl Object Environment
    38. lettera Babbo Natale lettera Kernel Paolino post( \"Santa\", \"lettera\" ) POE - A Perl Object Environment
    39. POE - A Perl Object Environment
    40. Wheel POE - A Perl Object Environment
    41. Insiemi di gestori di eventi POE - A Perl Object Environment
    42. POE:: Wheel:: FollowTail POE - A Perl Object Environment
    43. use POE qw( Wheel::FollowTail ); POE - A Perl Object Environment
    44. $|++ POE - A Perl Object Environment
    45. POE::Session->create( inline_states => {... POE - A Perl Object Environment
    46. _start => sub { my $heap = $_[ HEAP ]; my $watcher = POE::Wheel::FollowTail->new( Filename => 'logfile.log', PollInterval => 1, InputEvent => 'input_state' ); $heap->{ watcher } = $watcher; } , ... POE - A Perl Object Environment
    47. _start => sub { my $heap = $_[ HEAP ]; my $watcher = POE::Wheel::FollowTail->new( Filename => 'logfile.log', PollInterval => 1, InputEvent => 'input_state' ); $heap->{ watcher } = $watcher; } , ... POE - A Perl Object Environment
    48. _start => sub { my $heap = $_[ HEAP ]; my $watcher = POE::Wheel::FollowTail->new( Filename => 'logfile.log', PollInterval => 1, InputEvent => 'input_state' ); $heap->{ watcher } = $watcher; } , ... POE - A Perl Object Environment
    49. _start => sub { my $heap = $_[ HEAP ]; my $watcher = POE::Wheel::FollowTail->new( Filename => 'logfile.log', PollInterval => 1, InputEvent => 'input_state' ); $heap->{ watcher } = $watcher; } , ... POE - A Perl Object Environment
    50. _start => sub { my $heap = $_[ HEAP ]; my $watcher = POE::Wheel::FollowTail->new( Filename => 'logfile.log', PollInterval => 1, InputEvent => 'input_state' ); $heap->{ watcher } = $watcher; } , ... POE - A Perl Object Environment
    51. input_state => sub { my $input = $_[ ARG0 ]; print $input; } POE - A Perl Object Environment
    52. Session __________ __________ __________ __________ __________ __________ Wheel POE - A Perl Object Environment
    53. Session __________ __________ __________ input_event __________ __________ __________ Wheel POE - A Perl Object Environment
    54. POE - A Perl Object Environment
    55. POE + Test + IRC POE - A Perl Object Environment
    56. Testing? POE - A Perl Object Environment
    57. Failed 3/10 tests ? Test IRC POE - A Perl Object Environment
    58. 09:41 < Quinn> larsen: Avast! Whoreson swab! You failed 3/10 tests! POE - A Perl Object Environment
    59. ? Test IRC POE - A Perl Object Environment
    60. Session POE:: Wheel:: __________ FollowTail __________ __________ __________ __________ __________ POE:: Component:: IRC POE - A Perl Object Environment
    61. POE:: Component:: IRC POE - A Perl Object Environment
    62. use POE qw/ Wheel::FollowTail Component::IRC /; POE - A Perl Object Environment
    63. use Acme::Scurvy::Whoreson::BilgeRat; POE - A Perl Object Environment
    64. my $conf = { nick => 'Quinn', ircname => 'HAR!', server => 'irc.freenode.net', port => 6667 }; my $channel = '#scummbar'; POE - A Perl Object Environment
    65. my $irc = POE::Component::IRC->spawn( %$conf ) or die \"HAR!!! $!\"; POE - A Perl Object Environment
    66. POE::Session->create( package_states => [ 'main' => [ qw( _default _start irc_001 irc_public tell_results ) ], ], heap => { irc => $irc } ); POE - A Perl Object Environment
    67. POE::Session->create( package_states => [ 'main' => [ qw( _default _start irc_001 irc_public tell_results ) ], ], heap => { irc => $irc } ); POE - A Perl Object Environment
    68. POE::Session->create( package_states => [ 'main' => [ qw( _default _start irc_001 irc_public tell_results ) ], ], heap => { irc => $irc } ); POE - A Perl Object Environment
    69. sub _start { my ( $kernel, $heap ) = @_[ KERNEL, HEAP ]; my $watcher = POE::Wheel::FollowTail->new( Filename => 'tests.log' , PollInterval => 1 , InputEvent => 'tell_results' ); $heap->{ watcher } = $watcher; my $irc_sess = $heap->{irc}->session_id(); $kernel->post( $irc_sess => register => 'all' ); $kernel->post( $irc_sess => connect => {} ); undef; } POE - A Perl Object Environment
    70. sub _start { my ( $kernel, $heap ) = @_[ KERNEL, HEAP ]; my $watcher = POE::Wheel::FollowTail->new( Filename => 'tests.log' , PollInterval => 1 , InputEvent => 'tell_results' ); $heap->{ watcher } = $watcher; my $irc_sess = $heap->{irc}->session_id(); $kernel->post( $irc_sess => register => 'all' ); $kernel->post( $irc_sess => connect => {} ); undef; } POE - A Perl Object Environment
    71. sub _start { my ( $kernel, $heap ) = @_[ KERNEL, HEAP ]; my $watcher = POE::Wheel::FollowTail->new( Filename => 'tests.log' , PollInterval => 1 , InputEvent => 'tell_results' ); $heap->{ watcher } = $watcher; my $irc_sess = $heap->{irc}->session_id(); $kernel->post( $irc_sess => register => 'all' ); $kernel->post( $irc_sess => connect => {} ); undef; } POE - A Perl Object Environment
    72. sub irc_001 { my ( $kernel, $sender ) = @_[ KERNEL, SENDER ]; $kernel->post( $sender => join => $channel ); undef; } POE - A Perl Object Environment
    73. sub tell_results { my $kernel = $_[KERNEL]; my $heap = $_[HEAP]; my $line = $_[ARG0]; my $irc_session = $heap->{irc}; my ($failed, $total) = split qr|/|, $line; if ($failed) { my $insult = Acme::Scurvy::Whoreson::BilgeRat->new( language => 'pirate' ); $kernel->post( $irc_session => privmsg => $channel => \"$insult! You failed $failed tests!\" ); } } } POE - A Perl Object Environment
    74. sub tell_results { my $kernel = $_[KERNEL]; my $heap = $_[HEAP]; my $line = $_[ARG0]; my $irc_session = $heap->{irc}; my ($failed, $total) = split qr|/|, $line; if ($failed) { my $insult = Acme::Scurvy::Whoreson::BilgeRat->new( language => 'pirate' ); $kernel->post( $irc_session => privmsg => $channel => \"$insult! You failed $failed tests!\" ); } } } POE - A Perl Object Environment
    75. sub tell_results { my $kernel = $_[KERNEL]; my $heap = $_[HEAP]; my $line = $_[ARG0]; my $irc_session = $heap->{irc}; my ($failed, $total) = split qr|/|, $line; if ($failed) { my $insult = Acme::Scurvy::Whoreson::BilgeRat->new( language => 'pirate' ); $kernel->post( $irc_session => privmsg => $channel => \"$insult! You failed $failed tests!\" ); } } } POE - A Perl Object Environment
    76. POE - A Perl Object Environment
    77. • irc.freenode.net,#poe • http://poe.perl.org • “Advanced Perl Programming” (O’Reilly) - Cap.7 • http://del.icio.us/slr/poe ☺ POE - A Perl Object Environment
    78. • http://www.perl.it • irc.freenode.net,#perl.it • mongers@perl.it POE - A Perl Object Environment
    79. Grazie! Stefano Rodighiero larsen@perl.it

    + Stefano RodighieroStefano Rodighiero, 3 years ago

    custom

    2197 views, 2 favs, 1 embeds more stats

    An introduction to POE, the "Perl Object Environmen more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 2197
      • 2178 on SlideShare
      • 19 from embeds
    • Comments 0
    • Favorites 2
    • Downloads 30
    Most viewed embeds
    • 19 views on http://www.stefanorodighiero.net

    more

    All embeds
    • 19 views on http://www.stefanorodighiero.net

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Groups / Events