Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 package distributor | |
| 6 | |
| 7 import ( | |
| 8 dm "github.com/luci/luci-go/common/api/dm/service/v1" | |
| 9 "golang.org/x/net/context" | |
| 10 ) | |
| 11 | |
| 12 // NewTaskDescription builds a new *TaskDescription. | |
| 13 // | |
| 14 // It's intended for use by the DM core logic, and not for use by distributor | |
| 15 // implementations. | |
| 16 func NewTaskDescription(c context.Context, payload *dm.Quest_Desc, exAuth *dm.Ex ecution_Auth, | |
| 17 state PersistentState) *TaskDescription { | |
| 18 return &TaskDescription{ | |
| 19 c: c, | |
| 20 payload: payload, | |
| 21 executionAuth: exAuth, | |
| 22 previousState: state, | |
| 23 } | |
| 24 } | |
| 25 | |
| 26 // TaskDescription is the parameters for PrepareTask. | |
| 27 type TaskDescription struct { | |
| 28 c context.Context | |
| 29 payload *dm.Quest_Desc | |
| 30 executionAuth *dm.Execution_Auth | |
| 31 previousState PersistentState | |
| 32 } | |
| 33 | |
| 34 // PrepareTopic returns the pubsub topic that notifications should be sent to. | |
| 35 // | |
| 36 // It returns the full name of the topic and a token that will be used to route | |
| 37 // PubSub messages back to the Distributor. The publisher to the topic must be | |
| 38 // instructed to put the token into the 'auth_token' attribute of PubSub | |
| 39 // messages. DM will know how to route such messages to D.HandleNotification. | |
| 40 func (t *TaskDescription) PrepareTopic() (topic, token string, err error) { | |
| 41 topic = pubsubTopic(t.c) | |
| 42 token, err = encodeAuthToken(t.c, t.executionAuth.Id, | |
| 43 t.payload.DistributorConfigName) | |
| 44 return | |
| 45 } | |
| 46 | |
| 47 // PreviousState is the current PersistentState of the Attempt (e.g. the | |
| 48 // PersistentState returned by the previous Execution). This will be empty | |
| 49 // for the first Execution. | |
| 50 func (t *TaskDescription) PreviousState() PersistentState { | |
| 51 return t.previousState | |
| 52 } | |
| 53 | |
| 54 // Payload is description of the job to run. | |
| 55 func (t *TaskDescription) Payload() *dm.Quest_Desc { | |
| 56 ret := *t.payload | |
|
dnj (Google)
2016/06/09 18:00:56
I think you should build "clone" into "Quest_Desc"
iannucci
2016/06/15 00:46:00
yeah that's a better idea. I was tired :P. Done.
| |
| 57 meta := *ret.Meta | |
| 58 retry := *meta.Retry | |
| 59 | |
| 60 meta.Retry = &retry | |
| 61 ret.Meta = &meta | |
| 62 return &ret | |
| 63 } | |
| 64 | |
| 65 // ExecutionAuth is the combined execution_id+activation token that the | |
| 66 // execution must use to call ActivateExecution before making further API calls | |
| 67 // into DM. | |
| 68 func (t *TaskDescription) ExecutionAuth() *dm.Execution_Auth { | |
| 69 ret := *t.executionAuth | |
| 70 return &ret | |
| 71 } | |
| OLD | NEW |