logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

MooseX::POE - The Illicit Love Child of Moose and POE

Authors

       •   Chris Prather <chris@prather.org>

       •   Ash Berlin <ash@cpan.org>

       •   Chris Williams <chris@bingosnet.co.uk>

       •   Yuval (nothingmuch) Kogman

       •   Torsten Raudssus <torsten@raudssus.de> <http://www.raudssus.de/>

Description

       MooseX::POE is a Moose wrapper around a POE::Session.

Keywords

Methods

       Default POE-related methods are provided by MooseX::POE::Meta::Trait::Object which is applied to your
       base class (which is usually Moose::Object) when you use this module. See that module for the
       documentation for. Below is a list of methods on that class so you know what to look for:

Name

       MooseX::POE - The Illicit Love Child of Moose and POE

Notes On Usage With Moosex::Declare

       MooseX::Declare support is still "experimental". Meaning that I don't use it, I don't have any code that
       uses it, and thus I can't adequately say that it won't cause monkeys to fly out of any orifices on your
       body beyond what the tests and the SYNOPSIS cover.

       That said there are a few caveats that have turned up during testing.

       1. The "method" keyword doesn't seem to work as expected. This is an integration issue that is being
       resolved but I want to wait for MooseX::Declare to gain some more polish on their slurpy arguments.

       2. MooseX::POE attempts to re-export Moose, which MooseX::Declare has already exported in a custom
       fashion.  This means that you'll get a keyword clash between the features that MooseX::Declare handles
       for you and the features that Moose handles. To work around this you'll need to write:

           use MooseX::POE qw(event);
           # or
           use MooseX::POE::SweetArgs qw(event);
           # or
           use MooseX::POE::Role qw(event);

       to keep MooseX::POE from exporting the sugar that MooseX::Declare doesn't like. This is fixed in the Git
       version of MooseX::Declare but that version (as of this writing) is not on the CPAN.

See Also

Synopsis

           package Counter;
           use MooseX::POE;

           has count => (
               isa     => 'Int',
               is      => 'rw',
               lazy    => 1,
               default => sub { 0 },
           );

           sub START {
               my ($self) = @_;
               $self->yield('increment');
           }

           event increment => sub {
               my ($self) = @_;
               print "Count is now " . $self->count . "\n";
               $self->count( $self->count + 1 );
               $self->yield('increment') unless $self->count > 3;
           };

           no MooseX::POE;

           Counter->new();
           POE::Kernel->run();

       or with MooseX::Declare:

           class Counter {
               use MooseX::POE::SweetArgs qw(event);

               has count => (
                   isa     => 'Int',
                   is      => 'rw',
                   lazy    => 1,
                   default => sub { 0 },
               );

               sub START {
                   my ($self) = @_;
                   $self->yield('increment')
               }

               event increment => sub {
                   my ($self) = @_;
                   print "Count is now " . $self->count . "\n";
                   $self->count( $self->count + 1 );
                   $self->yield('increment') unless $self->count > 3;
               }
           }

           Counter->new();
           POE::Kernel->run();

Version

       version 0.215

See Also