返回 DeepSeek-Reasonix
background_replacement.go
根目录 / internal / serve / background_replacement.go
1 package serve
2
3 import (
4 "context"
5 "reasonix/internal/boot"
6 "reasonix/internal/control"
7 )
8
9 func (s *Server) buildModelCandidate(ctx context.Context, ref string, opts boot.Options, inherit bool) (*control.Controller, error) {
10 finish, abort := func(*control.Controller) error { return nil }, func() {}
11 if inherit {
12 var err error
13 opts.BackgroundScope, finish, abort, err = control.ReserveBackgroundReplacement(s.ctl())
14 if err != nil {
15 return nil, err
16 }
17 }
18 defer abort()
19 var c *control.Controller
20 var err error
21 switch {
22 case s.buildControllerWithOptions != nil:
23 c, err = s.buildControllerWithOptions(ctx, ref, opts)
24 case s.buildController != nil:
25 c, err = s.buildController(ctx, ref)
26 default:
27 c, err = boot.Build(ctx, opts)
28 }
29 if err != nil {
30 return nil, err
31 }
32 if err := finish(c); err != nil {
33 c.ReleaseResources()
34 return nil, err
35 }
36 return c, nil
37 }
38
38 lines GO