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

Side by Side Diff: service/taskqueue/task.go

Issue 1890983004: service/taskqueue: Add NewPOSTTask, remove NewTask (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/gae@master
Patch Set: Zero value. Created 4 years, 8 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 unified diff | Download patch
« no previous file with comments | « service/taskqueue/interface.go ('k') | service/taskqueue/taskqueue.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // This file contains types which are mirrors/duplicates of the upstream SDK
6 // types. This exists so that users can depend solely on this wrapper library
7 // without necessarially needing an SDK implementation present.
8 //
9 // This was done (instead of type-aliasing from the github version of the SDK)
10 // because some of the types need to be tweaked (like Task.RetryOptions) to
11 // interact well with the wrapper, and the inconsistency of having some types
12 // defined by the gae package and others defined by the SDK was pretty awkward.
13
14 package taskqueue 5 package taskqueue
15 6
16 import ( 7 import (
17 "net/http" 8 "net/http"
9 "net/url"
18 "time" 10 "time"
19 ) 11 )
20 12
21 // Statistics represents statistics about a single task queue.
22 type Statistics struct {
23 Tasks int // may be an approximation
24 OldestETA time.Time // zero if there are no pending tasks
25
26 Executed1Minute int // tasks executed in the last minute
27 InFlight int // tasks executing now
28 EnforcedRate float64 // requests per second
29 }
30
31 // RetryOptions let you control whether to retry a task and the backoff interval s between tries. 13 // RetryOptions let you control whether to retry a task and the backoff interval s between tries.
32 type RetryOptions struct { 14 type RetryOptions struct {
33 // Number of tries/leases after which the task fails permanently and is deleted. 15 // Number of tries/leases after which the task fails permanently and is deleted.
34 // If AgeLimit is also set, both limits must be exceeded for the task to fail permanently. 16 // If AgeLimit is also set, both limits must be exceeded for the task to fail permanently.
35 RetryLimit int32 17 RetryLimit int32
36 18
37 // Maximum time allowed since the task's first try before the task fails permanently and is deleted (only for push tasks). 19 // Maximum time allowed since the task's first try before the task fails permanently and is deleted (only for push tasks).
38 // If RetryLimit is also set, both limits must be exceeded for the task to fail permanently. 20 // If RetryLimit is also set, both limits must be exceeded for the task to fail permanently.
39 AgeLimit time.Duration 21 AgeLimit time.Duration
40 22
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 // The number of times the task has been dispatched or leased. 73 // The number of times the task has been dispatched or leased.
92 RetryCount int32 74 RetryCount int32
93 75
94 // Tag for the task. Only used when Method is PULL. 76 // Tag for the task. Only used when Method is PULL.
95 Tag string 77 Tag string
96 78
97 // Retry options for this task. May be nil. 79 // Retry options for this task. May be nil.
98 RetryOptions *RetryOptions 80 RetryOptions *RetryOptions
99 } 81 }
100 82
83 // NewPOSTTask creates a Task that will POST to a path with URL-encoded values.
84 func NewPOSTTask(path string, params url.Values) *Task {
85 h := make(http.Header)
86 h.Set("Content-Type", "application/x-www-form-urlencoded")
87 return &Task{
88 Path: path,
89 Payload: []byte(params.Encode()),
90 Header: h,
91 Method: "POST",
92 }
93 }
94
101 // Duplicate returns a deep copy of this Task. 95 // Duplicate returns a deep copy of this Task.
102 func (t *Task) Duplicate() *Task { 96 func (t *Task) Duplicate() *Task {
103 ret := *t 97 ret := *t
104 98
105 if len(t.Header) > 0 { 99 if len(t.Header) > 0 {
106 ret.Header = make(http.Header, len(t.Header)) 100 ret.Header = make(http.Header, len(t.Header))
107 for k, vs := range t.Header { 101 for k, vs := range t.Header {
108 newVs := make([]string, len(vs)) 102 newVs := make([]string, len(vs))
109 copy(newVs, vs) 103 copy(newVs, vs)
110 ret.Header[k] = newVs 104 ret.Header[k] = newVs
111 } 105 }
112 } 106 }
113 107
114 if len(t.Payload) > 0 { 108 if len(t.Payload) > 0 {
115 ret.Payload = make([]byte, len(t.Payload)) 109 ret.Payload = make([]byte, len(t.Payload))
116 copy(ret.Payload, t.Payload) 110 copy(ret.Payload, t.Payload)
117 } 111 }
118 112
119 if t.RetryOptions != nil { 113 if t.RetryOptions != nil {
120 ret.RetryOptions = &RetryOptions{} 114 ret.RetryOptions = &RetryOptions{}
121 *ret.RetryOptions = *t.RetryOptions 115 *ret.RetryOptions = *t.RetryOptions
122 } 116 }
123 117
124 return &ret 118 return &ret
125 } 119 }
OLDNEW
« no previous file with comments | « service/taskqueue/interface.go ('k') | service/taskqueue/taskqueue.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698