webhookd/pkg/worker/work_request.go

52 lines
1.0 KiB
Go
Raw Normal View History

package worker
import (
"sync"
"sync/atomic"
)
2018-07-24 15:36:19 +00:00
var workID uint64
// WorkRequest is a request of work for a worker
type WorkRequest struct {
2018-07-24 15:36:19 +00:00
ID uint64
Name string
Script string
Payload string
Args []string
MessageChan chan []byte
2018-01-09 09:18:16 +00:00
Timeout int
Terminated bool
mutex sync.Mutex
}
// NewWorkRequest creats new work request
func NewWorkRequest(name, script, payload string, args []string, timeout int) *WorkRequest {
return &WorkRequest{
2018-07-24 15:36:19 +00:00
ID: atomic.AddUint64(&workID, 1),
Name: name,
Script: script,
Payload: payload,
Args: args,
Timeout: timeout,
MessageChan: make(chan []byte),
Terminated: false,
}
}
// Terminate set work request as terminated
func (wr *WorkRequest) Terminate() {
wr.mutex.Lock()
defer wr.mutex.Unlock()
if !wr.Terminated {
wr.Terminated = true
}
}
// IsTerminated ask if the work request is terminated
func (wr *WorkRequest) IsTerminated() bool {
wr.mutex.Lock()
defer wr.mutex.Unlock()
return wr.Terminated
}