package Qudo::Hook::Scoreboard;
use strict;
use warnings;
use base 'Qudo::Hook';
use Qudo::Parallel::Manager::Registrar;
use Parallel::Prefork::SpareWorkers qw(:status);

sub load {
    my ($class, $klass) = @_;

    $klass->hooks->{pre_work}->{'scoreboard'} = sub {
        my $job = shift;
        Qudo::Parallel::Manager::Registrar->pm->set_status('A');
    };

    $klass->hooks->{post_work}->{'scoreboard'} = sub {
        my $job = shift;
        Qudo::Parallel::Manager::Registrar->pm->set_status(STATUS_IDLE);
    };
}

sub unload {
    my ($class, $klass) = @_;

    delete $klass->hooks->{pre_work}->{'scoreboard'};
    delete $klass->hooks->{post_work}->{'scoreboard'};
}

1;