+ $self->ioloop->timer( $self->timeout => sub {
+ my $self = shift;
+ warn "TIMEOUT $handle ", $self->timeout, "s for result";
+ $self->stop;
+ });
+ } elsif ( $type == $packet_type->{NO_JOB} ) {
+ $self->req( 'PRE_SLEEP' );
+ $self->stop;
+ } elsif ( $type == $packet_type->{JOB_ASSIGN} ) {
+ my ( $function, $workload ) = @data;
+ my $callback = $self->{_function}->{$function};
+ die "no $function callback" unless ref $callback eq 'CODE';
+ my $out = $callback->( $workload );
+ warn "## $data $callback = ", dump $out;
+ $self->req( 'WORK_COMPLETE', $handle, $out );
+ $self->req( 'GRAB_JOB' );
+ } elsif ( $type == $packet_type->{NOOP} ) {
+ $self->req( 'GRAB_JOB' );
+ } else {
+ $self->stop;