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

Side by Side Diff: impl/memory/taskqueue.go

Issue 1494223002: Add API to allow you to get the non-transactional datastore or taskqueue. (Closed) Base URL: https://github.com/luci/gae.git@master
Patch Set: Created 5 years 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package memory 5 package memory
6 6
7 import ( 7 import (
8 "regexp" 8 "regexp"
9 "sync/atomic" 9 "sync/atomic"
10 10
11 "golang.org/x/net/context" 11 "golang.org/x/net/context"
12 12
13 tq "github.com/luci/gae/service/taskqueue" 13 tq "github.com/luci/gae/service/taskqueue"
14 "github.com/luci/luci-go/common/errors" 14 "github.com/luci/luci-go/common/errors"
15 "github.com/luci/luci-go/common/mathrand" 15 "github.com/luci/luci-go/common/mathrand"
16 ) 16 )
17 17
18 /////////////////////////////// public functions /////////////////////////////// 18 /////////////////////////////// public functions ///////////////////////////////
19 19
20 func useTQ(c context.Context) context.Context { 20 func useTQ(c context.Context) context.Context {
21 » return tq.SetRawFactory(c, func(ic context.Context) tq.RawInterface { 21 » return tq.SetRawFactory(c, func(ic context.Context, wantTxn bool) tq.Raw Interface {
22 » » tqd := cur(ic).Get(memContextTQIdx) 22 » » ns := curGID(ic).namespace
23 » » var tqd memContextObj
24
25 » » if !wantTxn {
26 » » » tqd = curNoTxn(ic).Get(memContextTQIdx)
27 » » } else {
28 » » » tqd = cur(ic).Get(memContextTQIdx)
29 » » }
30
23 if x, ok := tqd.(*taskQueueData); ok { 31 if x, ok := tqd.(*taskQueueData); ok {
24 » » » return &taskqueueImpl{ 32 » » » return &taskqueueImpl{x, ic, ns}
iannucci 2015/12/04 03:35:10 don't need to tweak the context because taskqueue
25 » » » » x,
26 » » » » ic,
27 » » » » curGID(ic).namespace,
28 » » » }
29 } 33 }
30 » » return &taskqueueTxnImpl{ 34 » » return &taskqueueTxnImpl{tqd.(*txnTaskQueueData), ic, ns}
31 » » » tqd.(*txnTaskQueueData),
32 » » » ic,
33 » » » curGID(ic).namespace,
34 » » }
35 }) 35 })
36 } 36 }
37 37
38 //////////////////////////////// taskqueueImpl ///////////////////////////////// 38 //////////////////////////////// taskqueueImpl /////////////////////////////////
39 39
40 type taskqueueImpl struct { 40 type taskqueueImpl struct {
41 *taskQueueData 41 *taskQueueData
42 42
43 ctx context.Context 43 ctx context.Context
44 ns string 44 ns string
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 func dupQueue(q tq.QueueData) tq.QueueData { 252 func dupQueue(q tq.QueueData) tq.QueueData {
253 r := make(tq.QueueData, len(q)) 253 r := make(tq.QueueData, len(q))
254 for k, q := range q { 254 for k, q := range q {
255 r[k] = make(map[string]*tq.Task, len(q)) 255 r[k] = make(map[string]*tq.Task, len(q))
256 for tn, t := range q { 256 for tn, t := range q {
257 r[k][tn] = t.Duplicate() 257 r[k][tn] = t.Duplicate()
258 } 258 }
259 } 259 }
260 return r 260 return r
261 } 261 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698