NAME
POE::Component::SmokeBox::JobQueue - An array based queue for SmokeBox
VERSION
version 0.58
SYNOPSIS
my
$perl
=
'home/cpan/rel/perl-5.8.8/bin/perl'
;
my
$q
= POE::Component::SmokeBox::JobQueue->spawn();
POE::Session->create(
package_states
=> [
'main'
=> [
qw(_start _result)
],
],
);
$poe_kernel
->run();
exit
0;
sub
_start {
my
$smoker
= POE::Component::SmokeBox::Smoker->new(
perl
=>
$perl
);
my
$job
= POE::Component::SmokeBox::Job->new(
type
=>
'CPANPLUS::YACSmoke'
,
command
=>
'smoke'
,
module
=>
'B/BI/BINGOS/POE-Component-IRC-5.88.tar.gz'
,
);
my
$id
=
$q
->submit(
event
=>
'_result'
,
job
=>
$job
,
smokers
=> [
$smoker
] );
"Job ID $id submitted\n"
;
return
;
}
sub
_result {
my
(
$kernel
,
$results
) =
@_
[KERNEL,ARG0];
"Submitted = "
,
$results
->{submitted},
"\n"
;
Dumper(
$_
)
for
$results
->{result}->results();
$q
->
shutdown
();
return
;
}
DESCRIPTION
POE::Component::SmokeBox::JobQueue is an array based job queue for POE::Component::SmokeBox.
Smoke jobs are submitted to the queue and processed with POE::Component::SmokeBox::Backend.
A smoke job is encapsulated in a POE::Component::SmokeBox::Job object.
The results of the smoke are returned encapsulated in a POE::Component::SmokeBox::Result object.
CONSTRUCTOR
spawn
-
Creates a new POE::Component::SmokeBox::JobQueue object. Takes a number of optional parameters:
'alias'
, specify a POE::Kernel alias
for
the component;
'options'
, a hashref of POE::Session options to pass to the poco's POE::Session;
'delay'
, the
time
in seconds to
wait
between job runs,
default
is 0;
METHODS
session_id
-
Returns the POE::Session ID of the component's session.
shutdown
-
Terminates the jobqueue and kills any currently processing job.
submit
-
Submits a job to the jobqueue for processing. Takes a number of parameters:
'job'
, a POE::Component::SmokeBox::Job object, mandatory;
'event'
, the event to
send
results to, mandatory;
'smokers'
, an arrayref of POE::Component::SmokeBox::Smoker objects, mandatory;
'session'
, the session to
send
results to,
default
is the sender;
'type'
, specify the job priority,
'push'
or
'unshift'
, defaults to
'push'
;
Jobs are by default pushed onto the end of the queue. You may specify
unshift
to put submitted items to the front of the queue.Returns a unique job ID number.
cancel
-
Given a previously returned job ID number, removes that job from the queue.
'job'
, a job ID number, mandatory;
Returns a hashref defining the cancelled job on success, undef otherwise.
pending_jobs
-
Returns a list of pending jobs in the queue. Each job is represented as a hashref, defined as following:
'id'
, the unique job ID number of the job;
'job'
, the POE::Component::SmokeBox::Job object of the job;
'submitted'
, the epoch
time
in seconds
when
the job was submitted;
'event'
, the event that will be sent
with
the results;
'session'
, the session ID the above event will be sent to;
current_job
-
Returns a hashref to the currently processing job, if there is one, undef otherwise. The hashref will have the following keys:
'job'
, the POE::Component::SmokeBox::Job object of the job;
'submitted'
, the epoch
time
in seconds
when
the job was submitted;
'event'
, the event that will be sent
with
the results;
'session'
, the session ID the above event will be sent to;
'smokers'
, an arrayref of POE::Component::SmokeBox::Smoker objects that are waiting to be processed;
'backend'
, the POE::Component::SmokeBox::Backend object of the current job;
'result'
, a POE::Component::SmokeBox::Result object containing the results so far;
pause_queue
-
Pauses the jobqueue. Any currently processing jobs will be completed, but nothing else will be processed until the queue is resumed.
pause_queue_now
-
Same as
pause_queue
but also halts any currently processing job. resume_queue
-
Resumes the processing of a previously paused jobqueue.
queue_paused
-
Returns true if the jobqueue is paused, false otherwise.
OUTPUT EVENT
An event will be sent on process completion with a hashref as ARG0
:
'job'
, the POE::Component::SmokeBox::Job object of the job;
'result'
, a POE::Component::SmokeBox::Result object containing the results;
'submitted'
, the epoch
time
in seconds
when
the job was submitted;
'event'
, the event that will be sent
with
the results;
'session'
, the session ID the above event will be sent to;
The results will be same as returned by POE::Component::SmokeBox::Backend. They may be obtained by querying the POE::Component::SmokeBox::Result object:
$_
[ARG0]->{result}->results()
# produces a list
Each result is a hashref:
'log'
, an arrayref of STDOUT and STDERR produced by the job;
'PID'
, the process ID of the POE::Wheel::Run;
'status'
, the $? of the process;
'start_time'
, the
time
in epoch seconds
when
the job started running;
'end_time'
, the
time
in epoch seconds
when
the job finished;
'idle_kill'
, only present
if
the job was killed because of excessive idle;
'excess_kill'
, only present
if
the job was killed due to excessive runtime;
'term_kill'
, only present
if
the job was killed due to a poco
shutdown
event;
'cb_kill'
, only present
if
the job was killed due to the callback returning false;
SEE ALSO
POE::Component::SmokeBox::Backend
AUTHOR
Chris Williams <chris@bingosnet.co.uk>
COPYRIGHT AND LICENSE
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.