The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Email::Sender::Server::Controller::Start;
{
    $Email::Sender::Server::Controller::Start::VERSION = '0.50';
}

use Command::Do;

has abstract => 'start processing the email queue';

=head1 NAME

ess-start - start processing the email queue

=head1 SYNOPSIS

    ess start [--workers | -w]
    
This command spawns worker processes (defaults to 3) to validate and deliver
email messages stored in the queue.

=head1 OPTIONS

=head2 -w, --workers

The number of worker processes to spawn in order to efficiently process the email
queue. Please do not overload your system by spawning more processes than your
system can handle.

=cut

fld workers => {
    required => 1,
    filters  => ['trim', 'number'],
    alias    => ['w'],
    optspec  => 'n',
    default  => 3
};

mth run => {

    input => ['workers'],
    using => sub {

        my ($self) = @_;

        my $pid = fork;

        unless ($pid) {

            require Email::Sender::Server::Manager;

            my $manager =
              Email::Sender::Server::Manager->new(spawn => $self->workers);

            $manager->delegate_workload;

        }

        exit print "Starting ESS Background Process (pid: $$)\n";

      }

};

1;