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

Unified Diff: go/src/infra/gae/libs/wrapper/taskqueue.go

Issue 1151473003: Better attempt at an appengine wrapper. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: fix coverage numbers Created 5 years, 7 months 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 | « go/src/infra/gae/libs/wrapper/memcache.go ('k') | go/src/infra/gae/libs/wrapper/taskqueue_testable.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: go/src/infra/gae/libs/wrapper/taskqueue.go
diff --git a/go/src/infra/gae/libs/wrapper/taskqueue.go b/go/src/infra/gae/libs/wrapper/taskqueue.go
new file mode 100644
index 0000000000000000000000000000000000000000..7bda49a2ab1ea8f623bce50326ccc7454d628c7b
--- /dev/null
+++ b/go/src/infra/gae/libs/wrapper/taskqueue.go
@@ -0,0 +1,79 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package wrapper
+
+import (
+ "golang.org/x/net/context"
+
+ "appengine/taskqueue"
+)
+
+// TQSingleReadWriter allows you to add or delete a single Task from a queue.
+// See appengine.taskqueue.
+type TQSingleReadWriter interface {
+ Add(task *taskqueue.Task, queueName string) (*taskqueue.Task, error)
+ Delete(task *taskqueue.Task, queueName string) error
+}
+
+// TQMultiReadWriter allows you to add or delete a batch of Tasks from a queue.
+// See appengine.taskqueue.
+type TQMultiReadWriter interface {
+ TQSingleReadWriter
+
+ AddMulti(tasks []*taskqueue.Task, queueName string) ([]*taskqueue.Task, error)
+ DeleteMulti(tasks []*taskqueue.Task, queueName string) error
+}
+
+// TQLeaser allows you to lease tasks from a Pull queue.
+// See appengine.taskqueue.
+type TQLeaser interface {
+ Lease(maxTasks int, queueName string, leaseTime int) ([]*taskqueue.Task, error)
+ LeaseByTag(maxTasks int, queueName string, leaseTime int, tag string) ([]*taskqueue.Task, error)
+ ModifyLease(task *taskqueue.Task, queueName string, leaseTime int) error
+}
+
+// TQPurger allows you to drain a queue without processing it. See
+// appengine.taskqueue.
+type TQPurger interface {
+ Purge(queueName string) error
+}
+
+// TQStatter allows you to obtain semi-realtime stats on the current state of
+// a queue. See appengine.taskqueue.
+type TQStatter interface {
+ QueueStats(queueNames []string, maxTasks int) ([]taskqueue.QueueStatistics, error)
+}
+
+// TaskQueue is the full interface to the Task Queue service.
+type TaskQueue interface {
+ TQMultiReadWriter
+ TQLeaser
+ TQPurger
+}
+
+// TQFactory is the function signature for factory methods compatible with
+// SetTQFactory.
+type TQFactory func(context.Context) TaskQueue
+
+// GetTQ gets the TaskQueue implementation from context.
+func GetTQ(c context.Context) TaskQueue {
+ if f, ok := c.Value(taskQueueKey).(TQFactory); ok && f != nil {
+ return f(c)
+ }
+ return nil
+}
+
+// SetTQFactory sets the function to produce TaskQueue instances, as returned by
+// the GetTQ method.
+func SetTQFactory(c context.Context, tqf TQFactory) context.Context {
+ return context.WithValue(c, taskQueueKey, tqf)
+}
+
+// SetTQ sets the current TaskQueue object in the context. Useful for testing
+// with a quick mock. This is just a shorthand SetTQFactory invocation to set
+// a factory which always returns the same object.
+func SetTQ(c context.Context, tq TaskQueue) context.Context {
+ return SetTQFactory(c, func(context.Context) TaskQueue { return tq })
+}
« no previous file with comments | « go/src/infra/gae/libs/wrapper/memcache.go ('k') | go/src/infra/gae/libs/wrapper/taskqueue_testable.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698