diff options
author | franck cuny <franck@lumberjaph.net> | 2010-06-24 11:13:44 +0200 |
---|---|---|
committer | franck cuny <franck@lumberjaph.net> | 2010-06-24 11:13:44 +0200 |
commit | 8404183f74704bef03136aa36947fb65c74fa49c (patch) | |
tree | f1373cbd4fc356e7ef871be8860fc6bc1a26dfbe /lib/presque | |
parent | moved to role::queue::names (diff) | |
download | presque-8404183f74704bef03136aa36947fb65c74fa49c.tar.gz |
rename roles
Diffstat (limited to 'lib/presque')
-rw-r--r-- | lib/presque/Role/Queue.pm | 23 | ||||
-rw-r--r-- | lib/presque/Role/Queue/Names.pm | 55 | ||||
-rw-r--r-- | lib/presque/Role/Queue/WithContent.pm | 33 | ||||
-rw-r--r-- | lib/presque/Role/Queue/WithQueueName.pm (renamed from lib/presque/Role/RequireQueue.pm) | 11 |
4 files changed, 115 insertions, 7 deletions
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/RequireQueue.pm b/lib/presque/Role/Queue/WithQueueName.pm index f9e6ec7..f911a57 100644 --- a/lib/presque/Role/RequireQueue.pm +++ b/lib/presque/Role/Queue/WithQueueName.pm @@ -1,11 +1,8 @@ -package presque::Role::RequireQueue; +package presque::Role::Queue::WithQueueName; use MooseX::Role::Parameterized; -parameter methods => ( - isa => 'ArrayRef', - required => 1, -); +parameter methods => (is => 'ro', isa => 'ArrayRef', required => 1); role { my $p = shift; @@ -18,9 +15,9 @@ role { my $self = shift; my $queue_name = shift; - return $self->http_error_queue if !$queue_name; + return $self->http_error_queue if (!$queue_name); - $self->$orig($queue_name, @_); + $self->$orig($queue_name); }; } }; |