MCPcopy Create free account
hub / github.com/golang/appengine / newAddReq

Function newAddReq

v2/taskqueue/taskqueue.go:202–274  ·  view source on GitHub ↗
(c context.Context, task *Task, queueName string)

Source from the content-addressed store, hash-verified

200}
201
202func newAddReq(c context.Context, task *Task, queueName string) (*pb.TaskQueueAddRequest, error) {
203 if queueName == "" {
204 queueName = "default"
205 }
206 path := task.Path
207 if path == "" {
208 path = "/_ah/queue/" + queueName
209 }
210 eta := task.ETA
211 if eta.IsZero() {
212 eta = time.Now().Add(task.Delay)
213 } else if task.Delay != 0 {
214 panic("taskqueue: both Delay and ETA are set")
215 }
216 req := &pb.TaskQueueAddRequest{
217 QueueName: []byte(queueName),
218 TaskName: []byte(task.Name),
219 EtaUsec: proto.Int64(eta.UnixNano() / 1e3),
220 }
221 method := task.method()
222 if method == "PULL" {
223 // Pull-based task
224 req.Body = task.Payload
225 req.Mode = pb.TaskQueueMode_PULL.Enum()
226 if task.Tag != "" {
227 req.Tag = []byte(task.Tag)
228 }
229 } else {
230 // HTTP-based task
231 if v, ok := pb.TaskQueueAddRequest_RequestMethod_value[method]; ok {
232 req.Method = pb.TaskQueueAddRequest_RequestMethod(v).Enum()
233 } else {
234 return nil, fmt.Errorf("taskqueue: bad method %q", method)
235 }
236 req.Url = []byte(path)
237 for k, vs := range task.Header {
238 for _, v := range vs {
239 req.Header = append(req.Header, &pb.TaskQueueAddRequest_Header{
240 Key: []byte(k),
241 Value: []byte(v),
242 })
243 }
244 }
245 if method == "POST" || method == "PUT" {
246 req.Body = task.Payload
247 }
248
249 // Namespace headers.
250 if _, ok := task.Header[currentNamespace]; !ok {
251 // Fetch the current namespace of this request.
252 ns := internal.NamespaceFromContext(c)
253 req.Header = append(req.Header, &pb.TaskQueueAddRequest_Header{
254 Key: []byte(currentNamespace),
255 Value: []byte(ns),
256 })
257 }
258 if _, ok := task.Header[defaultNamespace]; !ok {
259 // Fetch the X-AppEngine-Default-Namespace header of this request.

Callers 2

AddFunction · 0.70
AddMultiFunction · 0.70

Calls 6

NamespaceFromContextFunction · 0.92
getDefaultNamespaceFunction · 0.70
AddMethod · 0.45
methodMethod · 0.45
EnumMethod · 0.45
toRetryParametersMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…