POE::Component::SmokeBox::Smoker - encapsulates a smoker object.
version 0.58
use POE::Component::SmokeBox::Smoker; my $smoker = POE::Component::SmokeBox::Smoker->new( perl => '/home/foo/perl-5.10.0/bin/perl', env => { APPDATA => '/home/foo/perl-5.10.0/', }, ); print $smoker->perl(); my $hashref = $smoker->env();
POE::Component::SmokeBox::Smoker provides an object based API for SmokeBox smokers. A smoker is defined as the path to a perl executable that is configured for CPAN Testing and its associated environment settings.
perl
new
Creates a new POE::Component::SmokeBox::Smoker object. Takes some parameters:
'perl', the path to a suitable perl executable, (required); 'env', a hashref containing %ENV type environment variables; 'do_callback', a callback to be triggered before+after smoking a job; 'name', anything you want to attach to the smoker for informative purposes;
Returns the perl executable path that was set.
env
Returns the hashref of %ENV settings, if applicable.
do_callback
Using this enables the callback mode. USE WITH CAUTION!
You need to pass a subref to enable it, and a undef value to disable it. A typical subref would be one you get from POE:
POE::Component::SmokeBox::Smoker->new( 'do_callback' => $_[SESSION]->callback( 'my_callback', @args ), 'perl' => $^X, );
Again, it is worth reminding you that you need to read POE::Session for the exact semantics of callbacks in POE. You do not need to supply POE callbacks, any plain subref will do.
POE::Component::SmokeBox::Smoker->new( 'do_callback' => \&my_callback, 'perl' => $^X, );
The callback will be executed before+after this smoker object processes a job. In the "BEFORE" phase, you can return a true/false value to control SmokeBox's actions. If a false value is returned, the smoker will NOT execute the job. It will simply submit the result as usual, but with some "twists" to the result. The result will have a status of "-1" to signify it didn't run and the "cb_kill" key will be set to 1. In the "AFTER" phase, the return value doesn't matter because the job is done.
Before a job, the callback will get the data shown. ( $self is a POE::Component::SmokeBox::Backend object! )
$callback->( 'BEFORE', $self );
After a job, the callback will get the data shown. ( $result is the result hashref you would get from SmokeBox normally )
$callback->( 'AFTER', $self, $result );
The normal flow for a job would be something like this:
* submit job to SmokeBox from your session * SmokeBox gets ready to process job * callback executed with BEFORE * SmokeBox processes job * callback executed with AFTER * SmokeBox submits results to your session
Now, if you have N smokers, it would look like this:
* submit job to SmokeBox from your session * SmokeBox gets ready to process job * callback executed with BEFORE ( for smoker 1 ) * SmokeBox processes job ( for smoker 1 ) * callback executed with AFTER ( for smoker 1 ) * callback executed with BEFORE ( for smoker N+1 ) * SmokeBox processes job ( for smoker N+1 ) * callback executed with AFTER ( for smoker N+1 ) * SmokeBox submits results to your session
dump_data
Returns all the data contained in the object as a list.
POE::Component::SmokeBox
POE::Component::SmokeBox::JobQueue
POE::Component::SmokeBox::Backend
Chris Williams <chris@bingosnet.co.uk>
This software is copyright (c) 2023 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.
To install POE::Component::SmokeBox, copy and paste the appropriate command in to your terminal.
cpanm
cpanm POE::Component::SmokeBox
CPAN shell
perl -MCPAN -e shell install POE::Component::SmokeBox
For more information on module installation, please visit the detailed CPAN module installation guide.