package Beanstalk::Job; use strict; use warnings; use base qw(Class::Accessor::Fast); our $VERSION = "1.07"; __PACKAGE__->mk_accessors( qw(id client buried reserved data error) ); sub stats { my $self = shift; $self->{_stats} = $self->client->stats_job($self->id) or $self->error($self->client->error); $self->{_stats}; } sub delete { my $self = shift; my $ret = $self->client->delete($self->id) or $self->error($self->client->error); $self->reserved(0); $self->buried(0); $ret; } sub touch { my $self = shift; my $ret = $self->client->touch($self->id) or $self->error($self->client->error); $ret; } sub peek { my $self = shift; my $ret = $self->client->peek($self->id) or $self->error($self->client->error); $ret; } sub release { my $self = shift; my $opt = shift; my $ret = $self->client->release($self->id, $opt) or $self->error($self->client->error); $self->reserved(0); $ret; } sub bury { my $self = shift; my $opt = shift; unless ($self->client->bury($self->id, $opt)) { $self->error($self->client->error); return undef; } $self->reserved(0); $self->buried(1); return 1; } sub args { my $self = shift; my $data = $self->data; return unless defined($data); $self->client->decoder->($data); } sub tube { my $self = shift; my $stats = $self->{_stats} || $self->stats or return undef; $stats->tube; } sub ttr { my $self = shift; my $stats = $self->{_stats} || $self->stats or return undef; $stats->ttr; } sub priority { my $self = shift; my $stats = $self->{_stats} || $self->stats or return undef; $stats->pri; } 1; __END__ =head1 NAME Beanstalk::Job - Class to represent a job from a beanstalkd server =head1 SYNOPSIS =head1 DESCRIPTION =head1 METHODS =over =item B Returns job id =item B Returns L object for the server the job resides on =item B Returns true if the job is buried =item B Returns true if the job was created via a reserve command and has not been deleted, buried or released =item B Returns the raw data for the beanstalkd server for the job =item B Returns the last error =item B Return a Stats object for this job. See L for a list of methods available. =item B Tell the server to delete this job =item B Calling C on a reserved job will reset the time left for the job to complete back to the original ttr value. =item B Peek this job on the server. =item B Release the job. =item B Tell the server to bury the job =item B Decode and return the raw data from the beanstalkd server =item B Return the name of the tube the job is in =item B Returns the jobs time to run, in seconds. =item B Return the jobs priority =back =head1 SEE ALSO L, L, L =head1 AUTHOR Graham Barr =head1 COPYRIGHT Copyright (C) 2008 by Graham Barr. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut