|
|
| |
POE::Component::Pluggable::Pipeline(3) |
User Contributed Perl Documentation |
POE::Component::Pluggable::Pipeline(3) |
POE::Component::Pluggable::Pipeline - the plugin pipeline for
POE::Component::Pluggable
use POE qw( Component::Pluggable );
use POE::Component::Pluggable::Pipeline;
use My::Plugin;
my $self = POE::Component::Pluggable->new();
# the following operations are presented in pairs
# the first is the general procedure, the second is
# the specific way using the pipeline directly
# to install a plugin
$self->plugin_add(mine => My::Plugin->new);
$self->pipeline->push(mine => My::Plugin->new);
# to remove a plugin
$self->plugin_del('mine'); # or the object
$self->pipeline->remove('mine'); # or the object
# to get a plugin
my $plug = $self->plugin_get('mine');
my $plug = $self->pipeline->get('mine');
# there are other very specific operations that
# the pipeline offers, demonstrated here:
# to get the pipeline object itself
my $pipe = $self->pipeline;
# to install a plugin at the front of the pipeline
$pipe->unshift(mine => My::Plugin->new);
# to remove the plugin at the end of the pipeline
my $plug = $pipe->pop;
# to remove the plugin at the front of the pipeline
my $plug = $pipe->shift;
# to replace a plugin with another
$pipe->replace(mine => newmine => My::Plugin->new);
# to insert a plugin before another
$pipe->insert_before(mine => newmine => My::Plugin->new);
# to insert a plugin after another
$pipe->insert_after(mine => newmine => My::Plugin->new);
# to get the location in the pipeline of a plugin
my $index = $pipe->get_index('mine');
# to move a plugin closer to the front of the pipeline
$pipe->bump_up('mine');
# to move a plugin closer to the end of the pipeline
$pipe->bump_down('mine');
POE::Component::Pluggable::Pipeline defines the Plugin pipeline system for
POE::Component::Pluggable instances.
Takes one argument, the POE::Component::Pluggable object to attach to.
Takes two arguments, an alias for a plugin and the plugin object itself. If a
plugin with that alias already exists, $@ will be set
and "undef" will be returned. Otherwise, it
adds the plugin to the end of the pipeline and registers it. This will yield a
"plugin_add" event. If successful, it
returns the size of the pipeline.
my $new_size = $pipe->push($name, $plug);
Takes two arguments, an alias for a plugin and the plugin object itself. If a
plugin with that alias already exists, $@ will be set
and "undef" will be returned. Otherwise, it
adds the plugin to the beginning of the pipeline and registers it. This will
yield a "plugin_add" event. If successful,
it returns the size of the pipeline.
my $new_size = $pipe->push($name, $plug);
Takes no arguments. The first plugin in the pipeline is removed. This will yield
a "plugin_del" event. In list context, it
returns the plugin and its alias; in scalar context, it returns only the
plugin. If there were no elements, an empty list or
"undef" will be returned.
my ($plug, $name) = $pipe->shift;
my $plug = $pipe->shift;
Takes no arguments. The last plugin in the pipeline is removed. This will yield
an "plugin_del" event. In list context, it
returns the plugin and its alias; in scalar context, it returns only the
plugin. If there were no elements, an empty list or
"undef" will be returned.
my ($plug, $name) = $pipe->pop;
my $plug = $pipe->pop;
Take three arguments, the old plugin or its alias, an alias for the new plugin
and the new plugin object itself. If the old plugin doesn't exist, or if there
is already a plugin with the new alias (besides the old plugin), $@ will be
set and "undef" will be returned. Otherwise,
it removes the old plugin (yielding an
"plugin_del" event) and replaces it with the
new plugin. This will yield an "plugin_add"
event. If successful, it returns 1.
my $success = $pipe->replace($name, $new_name, $new_plug);
my $success = $pipe->replace($plug, $new_name, $new_plug);
Takes three arguments, the plugin that is relative to the operation, an alias
for the new plugin and the new plugin object itself. If the first plugin
doesn't exist, or if there is already a plugin with the new alias,
$@ will be set and
"undef" will be returned. Otherwise, the new
plugin is placed just prior to the other plugin in the pipeline. If
successful, it returns 1.
my $success = $pipe->insert_before($name, $new_name, $new_plug);
my $success = $pipe->insert_before($plug, $new_name, $new_plug);
Takes three arguments, the plugin that is relative to the operation, an alias
for the new plugin and the new plugin object itself. If the first plugin
doesn't exist, or if there is already a plugin with the new alias,
$@ will be set and
"undef" will be returned. Otherwise, the new
plugin is placed just after to the other plugin in the pipeline. If
successful, it returns 1.
my $success = $pipe->insert_after($name, $new_name, $new_plug);
my $success = $pipe->insert_after($plug, $new_name, $new_plug);
Takes one or two arguments, the plugin or its alias, and the distance to bump
the plugin. The distance defaults to 1. If the plugin doesn't exist,
$@ will be set and -1 will be returned, not
undef. Otherwise, the plugin will be moved the given distance closer to
the front of the pipeline. A warning is issued alerting you if it would have
been moved past the beginning of the pipeline, and the plugin is placed at the
beginning. If successful, the new index of the plugin in the pipeline is
returned.
my $pos = $pipe->bump_up($name);
my $pos = $pipe->bump_up($plug);
my $pos = $pipe->bump_up($name, $delta);
my $pos = $pipe->bump_up($plug, $delta);
Takes one or two arguments, the plugin or its alias, and the distance to bump
the plugin. The distance defaults to 1. If the plugin doesn't exist,
$@ will be set and -1 will be returned, not
"undef". Otherwise, the plugin will be moved the
given distance closer to the end of the pipeline. A warning is issued alerting
you if it would have been moved past the end of the pipeline, and the plugin
is placed at the end. If successful, the new index of the plugin in the
pipeline is returned.
my $pos = $pipe->bump_down($name);
my $pos = $pipe->bump_down($plug);
my $pos = $pipe->bump_down($name, $delta);
my $pos = $pipe->bump_down($plug, $delta);
Takes one argument, a plugin or its alias. If the plugin doesn't exist,
$@ will be set and
"undef" will be returned. Otherwise, the
plugin is removed from the pipeline. This will yield an
"plugin_del" event. In list context,it
returns the plugin and its alias; in scalar context, it returns only the
plugin.
my ($plug, $name) = $pipe->remove($the_name);
my ($plug, $name) = $pipe->remove($the_plug);
my $plug = $pipe->remove($the_name);
my $plug = $pipe->remove($the_plug);
Takes one argument, a plugin or its alias. If no such plugin exists,
$@ will be set and
"undef" will be returned. In list context,
it returns the plugin and its alias; in scalar context, it returns only the
plugin.
my ($plug, $name) = $pipe->get($the_name);
my ($plug, $name) = $pipe->get($the_plug);
my $plug = $pipe->get($the_name);
my $plug = $pipe->get($the_plug);
Takes one argument, a plugin or its alias. If no such plugin exists,
$@ will be set and -1 will be returned, not
"undef". Otherwise, the index in the pipeline is
returned.
my $pos = $pipe->get_index($name);
my $pos = $pipe->get_index($plug);
POE::Component::IRC,
POE::Component::Pluggable.
- Chris Williams <chris@bingosnet.co.uk>
- Apocalypse <perl@0ne.us>
- Hinrik Örn Sigurðsson
- Jeff Pinyan
This software is copyright (c) 2017 by Chris Williams.
This is free software; you can redistribute it and/or modify it
under the same terms as the Perl 5 programming language system itself.
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc. |