The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Core::Pipeloader::Chooser;
use Moose;
use Magpie::Constants;
extends 'Magpie::Component';

__PACKAGE__->register_events(qw(init default moe larry curly));

sub load_queue {
    my ($self, $ctxt) = @_;
    my @events = ('init');
    if ( my $event = $self->request->param('appstate') ) {
        push @events, $event;
    }
    else {
        push @events, 'default';
    }
    return @events;
}

sub init {
    my $self = shift;
    my $ctxt = shift;
    $ctxt->{content} = 'chooser::init...';
    return OK;
}

sub default {
    my $self = shift;
    my $ctxt = shift;
    $ctxt->{content} .= 'chooser::default...';
    $self->parent_handler->add_handler('Core::Pipeloader::Moe');
    return OK;
}

sub moe {
    my $self = shift;
    my $ctxt = shift;
    $ctxt->{content} .= 'chooser::moe...';
    $self->parent_handler->add_handler('Core::Pipeloader::Moe');
    return OK;
}

sub larry {
    my $self = shift;
    my $ctxt = shift;
    $ctxt->{content} .= 'chooser::larry...';
    $self->parent_handler->add_handler('Core::Pipeloader::Moe');
    return OK;
}

sub curly {
    my $self = shift;
    my $ctxt = shift;
    $ctxt->{content} .= 'chooser::curly...';
    $self->parent_handler->add_handlers( qw( Core::Pipeloader::Moe Core::Pipeloader::Larry Core::Pipeloader::Curly Core::Basic::Output) );
    return OK;
}

1;