MCPcopy Index your code
hub / github.com/riverqueue/river / add

Method add

worker.go:164–194  ·  view source on GitHub ↗
(jobArgs JobArgs, workUnitFactory workunit.WorkUnitFactory)

Source from the content-addressed store, hash-verified

162}
163
164func (w Workers) add(jobArgs JobArgs, workUnitFactory workunit.WorkUnitFactory) error {
165 checkRegistered := func(kind string) error {
166 if _, ok := w.workersMap[kind]; ok {
167 return fmt.Errorf("worker for kind %q is already registered", kind)
168 }
169 return nil
170 }
171
172 workerInfo := workerInfo{
173 jobArgs: jobArgs,
174 workUnitFactory: workUnitFactory,
175 }
176
177 kind := jobArgs.Kind()
178 if err := checkRegistered(kind); err != nil {
179 return err
180 }
181 w.workersMap[kind] = workerInfo
182
183 // Jobs can register an alternate kind to make renaming easier.
184 if jobArgsWithKindAliases, ok := jobArgs.(JobArgsWithKindAliases); ok {
185 for _, kind := range jobArgsWithKindAliases.KindAliases() {
186 if err := checkRegistered(kind); err != nil {
187 return err
188 }
189 w.workersMap[kind] = workerInfo
190 }
191 }
192
193 return nil
194}
195
196// workFunc implements JobArgs and is used to wrap a function given to WorkFunc.
197type workFunc[T JobArgs] struct {

Callers 3

TestWorkers_addFunction · 0.95
AddWorkerArgsFunction · 0.80
AddWorkerSafelyFunction · 0.80

Calls 3

ErrorfMethod · 0.65
KindMethod · 0.65
KindAliasesMethod · 0.65

Tested by 1

TestWorkers_addFunction · 0.76