MCPcopy Create free account
hub / github.com/diillson/chatcli / backgroundLoop

Method backgroundLoop

auth/token_provider.go:337–375  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

335}
336
337func (p *oauthTokenProvider) backgroundLoop() {
338 defer close(p.bgDone)
339 for {
340 p.mu.Lock()
341 expires := p.cred.Expires
342 refresh := p.cred.Refresh
343 p.mu.Unlock()
344
345 if refresh == "" || expires <= 0 {
346 return
347 }
348
349 wait := time.Until(time.UnixMilli(expires)) - p.refreshLead
350 if wait < p.refreshMinWait {
351 wait = p.refreshMinWait
352 }
353
354 timer := time.NewTimer(wait)
355 select {
356 case <-p.bgCtx.Done():
357 timer.Stop()
358 return
359 case <-timer.C:
360 }
361
362 if _, err := p.Token(p.bgCtx); err != nil {
363 if p.logger != nil {
364 p.logger.Warn(i18n.T("auth.token_provider.background_refresh_failed"),
365 zap.String("provider", string(p.cred.Provider)),
366 zap.Error(err))
367 }
368 select {
369 case <-p.bgCtx.Done():
370 return
371 case <-time.After(p.refreshErrorBackoff):
372 }
373 }
374 }
375}
376
377func (p *oauthTokenProvider) Mode() AuthMode { return AuthModeOAuth }
378func (p *oauthTokenProvider) Provider() ProviderID { return p.cred.Provider }

Calls 8

StopMethod · 0.95
TokenMethod · 0.95
TFunction · 0.92
LockMethod · 0.80
UnlockMethod · 0.80
WarnMethod · 0.80
ErrorMethod · 0.65
StringMethod · 0.45