Index: service/taskqueue/types.go |
diff --git a/service/taskqueue/types.go b/service/taskqueue/types.go |
index c8cde3996c2f3e96d8568ec529a2cc7b15b21f97..1ef481c73bd88a46f0801739360f915ad1d6ebf7 100644 |
--- a/service/taskqueue/types.go |
+++ b/service/taskqueue/types.go |
@@ -97,3 +97,29 @@ type Task struct { |
// Retry options for this task. May be nil. |
RetryOptions *RetryOptions |
} |
+ |
+func (t *Task) Duplicate() *Task { |
+ ret := &Task{} |
dnj
2015/08/03 22:37:26
ret := *t
...
return &ret
iannucci
2015/08/04 01:21:21
Done.
|
+ *ret = *t |
+ |
+ if t.Header != nil { |
dnj
2015/08/03 22:37:25
len(t.Header) > 0
iannucci
2015/08/04 01:21:21
Done.
|
+ ret.Header = make(http.Header, len(t.Header)) |
+ for k, vs := range t.Header { |
+ newVs := make([]string, len(vs)) |
+ copy(newVs, vs) |
+ ret.Header[k] = newVs |
+ } |
+ } |
+ |
+ if t.Payload != nil { |
dnj
2015/08/03 22:37:26
len(t.Payload) > 0
iannucci
2015/08/04 01:21:21
Done.
|
+ ret.Payload = make([]byte, len(t.Payload)) |
+ copy(ret.Payload, t.Payload) |
+ } |
+ |
+ if t.RetryOptions != nil { |
+ ret.RetryOptions = &RetryOptions{} |
+ *ret.RetryOptions = *t.RetryOptions |
+ } |
+ |
+ return ret |
+} |