From 8404183f74704bef03136aa36947fb65c74fa49c Mon Sep 17 00:00:00 2001 From: franck cuny Date: Thu, 24 Jun 2010 11:13:44 +0200 Subject: rename roles --- lib/presque/Role/Queue.pm | 23 ++++++++++++++ lib/presque/Role/Queue/Names.pm | 55 +++++++++++++++++++++++++++++++++ lib/presque/Role/Queue/WithContent.pm | 33 ++++++++++++++++++++ lib/presque/Role/Queue/WithQueueName.pm | 25 +++++++++++++++ lib/presque/Role/RequireQueue.pm | 28 ----------------- 5 files changed, 136 insertions(+), 28 deletions(-) create mode 100644 lib/presque/Role/Queue.pm create mode 100644 lib/presque/Role/Queue/Names.pm create mode 100644 lib/presque/Role/Queue/WithContent.pm create mode 100644 lib/presque/Role/Queue/WithQueueName.pm delete mode 100644 lib/presque/Role/RequireQueue.pm diff --git a/lib/presque/Role/Queue.pm b/lib/presque/Role/Queue.pm new file mode 100644 index 0000000..c7b50f4 --- /dev/null +++ b/lib/presque/Role/Queue.pm @@ -0,0 +1,23 @@ +package presque::Role::Queue; + +use Moose::Role; + +sub new_queue { + my ($self, $queue_name, $lkey) = @_; + $self->application->redis->sadd('QUEUESET', $lkey); + my $ckey = $self->_queue_stat($queue_name); + $self->application->redis->set($ckey, 1); +} + +sub push_job { + my ($self, $queue_name, $lkey, $key, $delayed) = @_; + my ($method, @args) = ('rpush', $lkey, $key); + + if ($delayed) { + $method = 'zadd'; + @args = ($queue_name . ':delayed', $delayed, $key); + } + $self->application->redis->$method(@args,); +} + +1; diff --git a/lib/presque/Role/Queue/Names.pm b/lib/presque/Role/Queue/Names.pm new file mode 100644 index 0000000..6a2b6a7 --- /dev/null +++ b/lib/presque/Role/Queue/Names.pm @@ -0,0 +1,55 @@ +package presque::Role::Queue::Names; + +use Moose::Role; + +sub _queue { + my ($self, $queue_name) = @_; + return $queue_name.':queue'; +} + +sub _queue_delayed { + my ($self, $queue_name) = @_; + return $queue_name.':delayed'; +} + +sub _queue_policy { + my ($self, $queue_name) = @_; + return $queue_name.':queuepolicy'; +} + +sub _queue_uuid { + my ($self, $queue_name) = @_; + return $queue_name.':UUID'; +} + +sub _queue_uniq { + my ($self, $queue_name) = @_; + return $queue_name . ':uniq'; +} + +sub _queue_key { + my ($self, $queue_name, $uuid) = @_; + return $queue_name.':'.$uuid; +} + +sub _queue_stat { + my ($self, $queue_name) = @_; + return 'queuestat:'.$queue_name; +} + +sub _queue_worker { + my ($self, $worker_name) = @_; + return 'worker:'.$worker_name; +} + +sub _queue_failed { + my ($self, $queue_name) = @_; + return 'failed:'.$queue_name; +} + +sub _queue_processed { + my ($self, $queue_name) = @_; + return 'processed:' . $queue_name; +} + +1; diff --git a/lib/presque/Role/Queue/WithContent.pm b/lib/presque/Role/Queue/WithContent.pm new file mode 100644 index 0000000..df5679b --- /dev/null +++ b/lib/presque/Role/Queue/WithContent.pm @@ -0,0 +1,33 @@ +package presque::Role::Queue::WithContent; + +use MooseX::Role::Parameterized; + +parameter methods => (is => 'ro', isa => 'ArrayRef', required => 1); + +role { + my $p = shift; + + my $methods = $p->methods; + + foreach my $m (@$methods) { + around $m => sub { + my $orig = shift; + my $self = shift; + my $queue_name = shift; + + return $self->http_error_queue if (!$queue_name); + + return $self->http_error_content_type + if (!$self->request->header('Content-Type') + || $self->request->header('Content-Type') ne + 'application/json'); + + return $self->http_error("job is missing") + if !$self->request->content; + + $self->$orig($queue_name); + }; + } +}; + +1; diff --git a/lib/presque/Role/Queue/WithQueueName.pm b/lib/presque/Role/Queue/WithQueueName.pm new file mode 100644 index 0000000..f911a57 --- /dev/null +++ b/lib/presque/Role/Queue/WithQueueName.pm @@ -0,0 +1,25 @@ +package presque::Role::Queue::WithQueueName; + +use MooseX::Role::Parameterized; + +parameter methods => (is => 'ro', isa => 'ArrayRef', required => 1); + +role { + my $p = shift; + + my $methods = $p->methods; + + foreach my $m (@$methods) { + around $m => sub { + my $orig = shift; + my $self = shift; + my $queue_name = shift; + + return $self->http_error_queue if (!$queue_name); + + $self->$orig($queue_name); + }; + } +}; + +1; diff --git a/lib/presque/Role/RequireQueue.pm b/lib/presque/Role/RequireQueue.pm deleted file mode 100644 index f9e6ec7..0000000 --- a/lib/presque/Role/RequireQueue.pm +++ /dev/null @@ -1,28 +0,0 @@ -package presque::Role::RequireQueue; - -use MooseX::Role::Parameterized; - -parameter methods => ( - isa => 'ArrayRef', - required => 1, -); - -role { - my $p = shift; - - my $methods = $p->methods; - - foreach my $m (@$methods) { - around $m => sub { - my $orig = shift; - my $self = shift; - my $queue_name = shift; - - return $self->http_error_queue if !$queue_name; - - $self->$orig($queue_name, @_); - }; - } -}; - -1; -- cgit 1.4.1