diff options
Diffstat (limited to 'plugins/jobs/job.go')
-rw-r--r-- | plugins/jobs/job.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/plugins/jobs/job.go b/plugins/jobs/job.go new file mode 100644 index 00000000..8458b25b --- /dev/null +++ b/plugins/jobs/job.go @@ -0,0 +1,41 @@ +package jobs + +import ( + json "github.com/json-iterator/go" + "github.com/spiral/roadrunner/v2/utils" +) + +//// Handler handles job execution. +//type Handler func(id string, j *Job) error +// +//// ErrorHandler handles job execution errors. +//type ErrorHandler func(id string, j *Job, err error) + +// Job carries information about single job. +type Job struct { + // Job contains name of job broker (usually PHP class). + Job string `json:"job"` + + // Payload is string data (usually JSON) passed to Job broker. + Payload string `json:"payload"` + + // Options contains set of PipelineOptions specific to job execution. Can be empty. + Options *Options `json:"options,omitempty"` +} + +// Body packs job payload into binary payload. +func (j *Job) Body() []byte { + return utils.AsBytes(j.Payload) +} + +// Context packs job context (job, id) into binary payload. +func (j *Job) Context(id string) []byte { + ctx, _ := json.Marshal( + struct { + ID string `json:"id"` + Job string `json:"job"` + }{ID: id, Job: j.Job}, + ) + + return ctx +} |