IO-Iron

 view release on metacpan or  search on metacpan

lib/IO/Iron/IronWorker/Task.pm  view on Meta::CPAN

    $self->{'payload'}   = $params->{'payload'};
    $self->{'priority'}  = $params->{'priority'} if defined $params->{'priority'};
    $self->{'timeout'}   = $params->{'timeout'}  if defined $params->{'timeout'};
    $self->{'delay'}     = $params->{'delay'}    if defined $params->{'delay'};

    $self->{'run_every'} = $params->{'run_every'} if defined $params->{'run_every'};
    $self->{'end_at'}    = $params->{'end_at'}    if defined $params->{'end_at'};
    $self->{'run_times'} = $params->{'run_times'} if defined $params->{'run_times'};
    $self->{'start_at'}  = $params->{'start_at'}  if defined $params->{'start_at'};

    $self->{'id'}              = $params->{'id'}              if defined $params->{'id'};
    $self->{'project_id'}      = $params->{'project_id'}      if defined $params->{'project_id'};
    $self->{'code_id'}         = $params->{'code_id'}         if defined $params->{'code_id'};
    $self->{'status'}          = $params->{'status'}          if defined $params->{'status'};
    $self->{'code_history_id'} = $params->{'code_history_id'} if defined $params->{'code_history_id'};
    $self->{'code_rev'}        = $params->{'code_rev'}        if defined $params->{'code_rev'};
    $self->{'start_time'}      = $params->{'start_time'}      if defined $params->{'start_time'};
    $self->{'end_time'}        = $params->{'end_time'}        if defined $params->{'end_time'};
    $self->{'duration'}        = $params->{'duration'}        if defined $params->{'duration'};
    $self->{'updated_at'}      = $params->{'updated_at'}      if defined $params->{'updated_at'};
    $self->{'created_at'}      = $params->{'created_at'}      if defined $params->{'created_at'};
    $self->{'name'}            = $params->{'name'}            if defined $params->{'name'};

    # All of the above can be undefined, except the codename and payload.
    assert_nonblank( $self->{'code_name'}, 'code_name is defined and is not blank.' );
    assert_defined( $self->{'payload'}, 'payload is defined, can be blank.' );

    # If priority, timeout or delay are undefined, the IronWorker defaults (at the server) will be used.

    unlock_keys( %{$self} );
    my $blessed_ref = bless $self, $class;
    lock_keys( %{$self}, @self_keys );

    $log->tracef( 'Exiting new: %s', $blessed_ref );
    return $blessed_ref;
}

sub code_name { return $_[0]->_access_internal( 'code_name', $_[1] ); }
sub payload   { return $_[0]->_access_internal( 'payload',   $_[1] ); }
sub priority  { return $_[0]->_access_internal( 'priority',  $_[1] ); }
sub timeout   { return $_[0]->_access_internal( 'timeout',   $_[1] ); }
sub delay     { return $_[0]->_access_internal( 'delay',     $_[1] ); }
sub name      { return $_[0]->_access_internal( 'name',      $_[1] ); }

# These are for scheduled task:
sub run_every { return $_[0]->_access_internal( 'run_every', $_[1] ); }
sub end_at    { return $_[0]->_access_internal( 'end_at',    $_[1] ); }
sub run_times { return $_[0]->_access_internal( 'run_times', $_[1] ); }
sub start_at  { return $_[0]->_access_internal( 'start_at',  $_[1] ); }

# Returned when queried a queued task:
sub id              { return $_[0]->_access_internal( 'id',              $_[1] ); }
sub project_id      { return $_[0]->_access_internal( 'project_id',      $_[1] ); }
sub code_id         { return $_[0]->_access_internal( 'code_id',         $_[1] ); }
sub status          { return $_[0]->_access_internal( 'status',          $_[1] ); }
sub code_history_id { return $_[0]->_access_internal( 'code_history_id', $_[1] ); }
sub code_rev        { return $_[0]->_access_internal( 'code_rev',        $_[1] ); }
sub start_time      { return $_[0]->_access_internal( 'start_time',      $_[1] ); }
sub end_time        { return $_[0]->_access_internal( 'end_time',        $_[1] ); }
sub duration        { return $_[0]->_access_internal( 'duration',        $_[1] ); }
sub updated_at      { return $_[0]->_access_internal( 'updated_at',      $_[1] ); }
sub created_at      { return $_[0]->_access_internal( 'created_at',      $_[1] ); }

sub _access_internal {
    my ( $self, $var_name, $var_value ) = @_;
    $log->tracef( '_access_internal(%s, %s)', $var_name, $var_value );
    if ( defined $var_value ) {
        $self->{$var_name} = $var_value;
        return $self;
    }
    else {
        return $self->{$var_name};
    }
}

sub log {    ## no critic (Subroutines::ProhibitBuiltinHomonyms)
    my ($self) = @_;
    $log->tracef('Entering log().');

    my $task_id = $self->id();
    assert_nonblank( $task_id, 'task id not set. Task queued yet?' );
    my $connection = $self->{'connection'};
    my ( $http_status_code, $response_message ) =
      $connection->perform_iron_action( IO::Iron::IronWorker::Api::IRONWORKER_GET_A_TASKS_LOG(), { '{Task ID}' => $task_id, } );
    $self->{'last_http_status_code'} = $http_status_code;

    $log->tracef( 'Exiting log(): %s', $response_message );
    return $response_message;
}

sub cancel {
    my ($self) = @_;
    $log->tracef('Entering cancel().');

    my $task_id = $self->id();
    assert_nonblank( $task_id, 'task id not set. Task queued yet?' );
    my $connection = $self->{'connection'};
    my ( $http_status_code, $response_message ) =
      $connection->perform_iron_action( IO::Iron::IronWorker::Api::IRONWORKER_CANCEL_A_TASK(), { '{Task ID}' => $task_id, } );
    $self->{'last_http_status_code'} = $http_status_code;
    assert_is( $response_message->{'msg'}, 'Cancelled' );

    $log->tracef( 'Exiting cancel(): %s', 1 );
    return 1;
}

sub set_progress {
    my $self   = shift;
    my %params = validate_with(
        'params'         => \@_,
        'normalize_keys' => sub { return lc shift },
        'spec'           => {
            'percent' => { type => SCALAR, },    # percentage.
            'msg'     => { type => SCALAR, },    # message.
        },
    );
    $log->tracef( 'Entering set_progress(%s)', \%params );

    my $task_id = $self->id();
    assert_nonblank( $task_id, 'task id not set. Task queued yet?' );
    my $connection = $self->{'connection'};



( run in 1.266 second using v1.01-cache-2.11-cpan-98e64b0badf )