Net-FCP
view release on metacpan or search on metacpan
delete $job{$self->{id}};
$self->save;
system "mv", $self->{job}, "$DONE_HOME/$self->{p}{title}.job";
unlink $self->{job};
}
sub kill {
my ($self) = @_;
$self->clean;
$self->{coro}->cancel;
}
our @queue;
our $queue_change = new Coro::Signal;
our $queue_alloc = 0;
async {
for (;;) {
while (@queue
and (($queue[0][0] > 10 and $queue_alloc < $MAX_TXN)
$self->{p}{pri} ||= 1;
$self->{p}{state} ||= "examine";
$self->{job} =~ /\/([^\/]*)\.j$/ or die "$self->{job}: missing .j";
$self->{file} = "$DATA_HOME/$1.d";
sysopen $self->{fh}, $self->{file}, O_RDWR|O_CREAT, 0600
#$self->{fh} = aio_open $self->{file}, O_RDWR|O_CREAT, 0600
or die "$self->{file}: $!";
$self->{status} = "starting";
$self->{coro} = async {
$self->save;
for(;;) {
my ($state, @args) = ref $self->{p}{state} ? @{$self->{p}{state}} : $self->{p}{state};
my $next = eval { $self->can ("state_$state")->($self, @args) };
if ($@) {
$self->log ($@);
$next = $self->feedback ("continue with state: ");
}
$self->log ($self->{status} = "STATE CHANGE: ". join ", ", ref $next ? @$next : $next);
( run in 0.359 second using v1.01-cache-2.11-cpan-3cd7ad12f66 )