MCPcopy
hub / github.com/cloudreve/cloudreve / CreateTaskInSlave

Function CreateTaskInSlave

service/node/task.go:25–52  ·  view source on GitHub ↗
(s *cluster.CreateSlaveTask, c *gin.Context)

Source from the content-addressed store, hash-verified

23)
24
25func CreateTaskInSlave(s *cluster.CreateSlaveTask, c *gin.Context) (int, error) {
26 dep := dependency.FromContext(c)
27 registry := dep.TaskRegistry()
28
29 props, err := slaveTaskPropsFromContext(c)
30 if err != nil {
31 return 0, serializer.NewError(serializer.CodeParamErr, "failed to get master props from header", err)
32 }
33
34 var t queue.Task
35 switch s.Type {
36 case queue.SlaveUploadTaskType:
37 t = workflows.NewSlaveUploadTask(c, props, registry.NextID(), s.State)
38 case queue.SlaveCreateArchiveTaskType:
39 t = workflows.NewSlaveCreateArchiveTask(c, props, registry.NextID(), s.State)
40 case queue.SlaveExtractArchiveType:
41 t = workflows.NewSlaveExtractArchiveTask(c, props, registry.NextID(), s.State)
42 default:
43 return 0, serializer.NewError(serializer.CodeParamErr, "type not supported", nil)
44 }
45
46 if err := dep.SlaveQueue(c).QueueTask(c, t); err != nil {
47 return 0, serializer.NewError(serializer.CodeInternalSetting, "failed to queue task", err)
48 }
49
50 registry.Set(t.ID(), t)
51 return t.ID(), nil
52}
53
54type (
55 GetSlaveTaskParamCtx struct{}

Callers 1

SlaveCreateTaskFunction · 0.92

Calls 12

IDMethod · 0.95
FromContextFunction · 0.92
NewErrorFunction · 0.92
NewSlaveUploadTaskFunction · 0.92
TaskRegistryMethod · 0.65
NextIDMethod · 0.65
QueueTaskMethod · 0.65
SlaveQueueMethod · 0.65
SetMethod · 0.65

Tested by

no test coverage detected