summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/presque/WorkerHandler.pm51
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;