Andrew Sterling Hanenkamp > POE-Declarative-0.09 > POE::Declarative::Mixin

Download:
POE-Declarative-0.09.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.09   Source  

NAME ^

POE::Declarative::Mixin - use different declarative POE packages together

VERSION ^

version 0.09

SYNOPSIS ^

This is a really poor producer/consumer example, but it shows how the states of each mixin get pulled into the second class.

  package Producer;
  use base qw/ POE::Declarative::Mixin /;

  use POE;
  use POE::Declarative;

  on produce => run {
      push @{ get(HEAP)->{store} }, get ARG0;
  };

  package Consumer;
  use base qw/ POE::Declarative::Mixin /;

  use POE;
  use POE::Declarative;

  on consume => run {
      print "Consuming ", shift @{ get(HEAP)->{store} }, "\n";

      yield 'consume' if scalar @{ get(HEAP)->{store} };
  };

  package ProducerConsumer;

  use POE;
  use POE::Declarative;

  # Our mixins
  use Consumer;
  use Producer;

  on _start => run {
      for (1 .. 10) {
          yield produce => $_;
      }

      yield 'consume';
  };

DESCRIPTION ^

Mixin classes provide a nice abstraction for joining multiple functions together into a single package. This is similar to multiple inheritance, but doesn't modify @ISA for the class.

METHODS ^

import

This provides the basic magic to make this happen. If you are creating a mixin class that needs to further customize import, you'll probably want to see "export_poe_declarative_to_level".

export_poe_declarative_to_level LEVEL

This exports the states defined in the mixin to the package specified by level. The most common case for use would be in your mixin:

  sub import {
      my $class = shift;

      # Do other custom import tasks

      $class->export_poe_declarative_to_level(1);
  }

If you do not need to define a custom "import" method, you probably should ignore this method.

SEE ALSO ^

POE::Declarative

AUTHORS ^

Andrew Sterling Hanenkamp <hanenkamp@cpan.org>

COPYRIGHT AND LICENSE ^

Copyright 2007 Boomer Consulting, Inc. All Rights Reserved.

This program is free software and may be modified and distributed under the same terms as Perl itself.

syntax highlighting: