initialise repo
[debian/orchestra.git] / src / conductor / task_request.go
1 // task_request.go
2 //
3 package main
4
5 import (
6         "sort"
7         o "orchestra"
8 )
9
10 type TaskRequest struct {
11         job             *JobRequest
12         Player          string                          `json:"player"`
13         State           TaskState                       `json:"state"`
14         RetryTime       int64                           `json:"retrytime"`
15 }
16
17 func NewTaskRequest() (tr *TaskRequest) {
18         tr = new(TaskRequest)
19         tr.State = TASK_QUEUED
20
21         return tr
22 }
23
24 func (task *TaskRequest) Encode() (ptr *o.ProtoTaskRequest) {
25         ptr = new(o.ProtoTaskRequest)
26         ptr.Jobname = &task.job.Score
27         ptr.Id = new(uint64)
28         *ptr.Id = task.job.Id
29         ptr.Parameters = o.ProtoJobParametersFromMap(task.job.Params)
30
31         return ptr
32 }
33
34 func (task *TaskRequest) IsTarget(player string) (valid bool) {
35         valid = false
36         if task.Player == "" {
37                 n := sort.SearchStrings(task.job.Players, player)
38                 if task.job.Players[n] == player {
39                         valid = true
40                 }
41         } else {
42                 if task.Player == player {
43                         valid = true
44                 }
45         }
46         return valid
47 }