MCPcopy Index your code
hub / github.com/coder/coder / SubscribeProviderReload

Function SubscribeProviderReload

coderd/aibridged/reload.go:19–50  ·  view source on GitHub ↗

SubscribeProviderReload refreshes once, then on AI provider changes.

(
	ctx context.Context,
	ps dbpubsub.Pubsub,
	reloader ProviderReloader,
	logger slog.Logger,
)

Source from the content-addressed store, hash-verified

17
18// SubscribeProviderReload refreshes once, then on AI provider changes.
19func SubscribeProviderReload(
20 ctx context.Context,
21 ps dbpubsub.Pubsub,
22 reloader ProviderReloader,
23 logger slog.Logger,
24) (func(), error) {
25 if ps == nil {
26 return nil, xerrors.New("pubsub is required")
27 }
28 if reloader == nil {
29 return nil, xerrors.New("reloader is required")
30 }
31
32 unsubscribe, err := ps.SubscribeWithErr(pubsub.AIProvidersChangedChannel, func(cbCtx context.Context, _ []byte, err error) {
33 if err != nil {
34 logger.Warn(cbCtx, "ai providers changed event delivered with error", slog.Error(err))
35 return
36 }
37 if err := reloader.Reload(cbCtx); err != nil {
38 logger.Warn(cbCtx, "reload ai provider snapshot from pubsub event", slog.Error(err))
39 return
40 }
41 logger.Debug(cbCtx, "reloaded ai provider snapshot from pubsub event")
42 })
43 if err != nil {
44 return nil, xerrors.Errorf("subscribe to %s: %w", pubsub.AIProvidersChangedChannel, err)
45 }
46 if err := reloader.Reload(ctx); err != nil {
47 logger.Warn(ctx, "initial ai provider reload", slog.Error(err))
48 }
49 return unsubscribe, nil
50}

Calls 5

NewMethod · 0.65
SubscribeWithErrMethod · 0.65
ReloadMethod · 0.65
ErrorMethod · 0.45
ErrorfMethod · 0.45