diff options
Diffstat (limited to 'lib/presque')
-rw-r--r-- | lib/presque/WorkerHandler.pm | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/presque/WorkerHandler.pm b/lib/presque/WorkerHandler.pm new file mode 100644 index 0000000..51a832b --- /dev/null +++ b/lib/presque/WorkerHandler.pm @@ -0,0 +1,51 @@ +package presque::WorkerHandler; + +use JSON; +use Moose; +extends 'Tatsumaki::Handler'; +with qw/presque::Role::Error/; + +__PACKAGE__->asynchronous(1); + +sub get { + my ($self, $queue_name) = @_; + + if ($queue_name) { + }else{ + } + + $self->finish(); +} + +sub post { + my ($self, $queue_name) = @_; + + return $self->http_error_queue if !$queue_name; + + my $content = JSON::decode_json($self->request->content); + my $worker_id = $content->{worker_id}; + + $self->application->redis->sadd("workers", $worker_id); + $self->application->redis->sadd("workers:" . $queue_name, $worker_id); + $self->finish(); +} + +sub delete { + my ($self, $queue_name) = @_; + + return $self->http_error_queue if !$queue_name; + + my $input = $self->request->parameters; + my $worker_id = $input->{worker_id}; + + return $self->http_error('worker_id is missing') unless $worker_id; + + $self->application->redis->srem("worker", $worker_id); + $self->application->redis->srem("workers:" . $queue_name, $worker_id); + $self->application->redis->clear("processed:" . $worker_id); + $self->application->redis->clear("failed:" . $worker_id); + $self->application->redis->delete("workers:" . $worker_id . ":started"); + $self->finish(); +} + +1; |