Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: impl/prod/taskqueue.go

Issue 2512093002: Add support for Pull Queues to prod implementation. (Closed)
Patch Set: use time.Duration for leaseTime Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « impl/memory/taskqueue.go ('k') | service/taskqueue/interface.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: impl/prod/taskqueue.go
diff --git a/impl/prod/taskqueue.go b/impl/prod/taskqueue.go
index 6b7c1a5fc23664a2c162059a75c43e920944da53..758fb2b45107d912068c8f9a81fe7b8cb1279a03 100644
--- a/impl/prod/taskqueue.go
+++ b/impl/prod/taskqueue.go
@@ -7,6 +7,7 @@ package prod
import (
"fmt"
"reflect"
+ "time"
tq "github.com/luci/gae/service/taskqueue"
"golang.org/x/net/context"
@@ -85,6 +86,15 @@ func tqMF2R(ns []*tq.Task) []*taskqueue.Task {
return ret
}
+// tqMR2F (TQ multi-real-to-fake) converts []*taskqueue.Task to []*tq.Task.
+func tqMR2F(ns []*taskqueue.Task) []*tq.Task {
+ ret := make([]*tq.Task, len(ns))
+ for i, t := range ns {
+ ret[i] = tqR2F(t)
+ }
+ return ret
+}
+
func (t tqImpl) AddMulti(tasks []*tq.Task, queueName string, cb tq.RawTaskCB) error {
realTasks, err := taskqueue.AddMulti(t.aeCtx, tqMF2R(tasks), queueName)
if err != nil {
@@ -117,6 +127,26 @@ func (t tqImpl) DeleteMulti(tasks []*tq.Task, queueName string, cb tq.RawCB) err
return err
}
+func (t tqImpl) Lease(maxTasks int, queueName string, leaseTime time.Duration) ([]*tq.Task, error) {
+ tasks, err := taskqueue.Lease(t.aeCtx, maxTasks, queueName, int(leaseTime/time.Second))
+ if err != nil {
+ return nil, err
+ }
+ return tqMR2F(tasks), nil
+}
+
+func (t tqImpl) LeaseByTag(maxTasks int, queueName string, leaseTime time.Duration, tag string) ([]*tq.Task, error) {
+ tasks, err := taskqueue.LeaseByTag(t.aeCtx, maxTasks, queueName, int(leaseTime/time.Second), tag)
+ if err != nil {
+ return nil, err
+ }
+ return tqMR2F(tasks), nil
+}
+
+func (t tqImpl) ModifyLease(task *tq.Task, queueName string, leaseTime time.Duration) error {
+ return taskqueue.ModifyLease(t.aeCtx, tqF2R(task), queueName, int(leaseTime/time.Second))
+}
+
func (t tqImpl) Purge(queueName string) error {
return taskqueue.Purge(t.aeCtx, queueName)
}
« no previous file with comments | « impl/memory/taskqueue.go ('k') | service/taskqueue/interface.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698