mirror of
https://github.com/warmbly/warmbly.git
synced 2026-08-19 16:01:16 +00:00
41 lines
640 B
Go
41 lines
640 B
Go
package wmail
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/warmbly/warmbly/internal/errx"
|
|
)
|
|
|
|
var sleepTimes []time.Duration = []time.Duration{
|
|
10 * time.Second,
|
|
1 * time.Minute,
|
|
10 * time.Minute,
|
|
30 * time.Minute,
|
|
2 * time.Hour,
|
|
}
|
|
|
|
func (w *WMail) RunMailError(f func() *errx.MailError) {
|
|
for i := range 5 {
|
|
err := f()
|
|
if err == nil {
|
|
return
|
|
}
|
|
|
|
switch err.ResolveMethod {
|
|
case errx.MailErrorResolveMethodRetry:
|
|
time.Sleep(sleepTimes[i])
|
|
continue
|
|
case errx.MailErrorResolveMethodAuth:
|
|
case errx.MailErrorResolveMethodReload:
|
|
w.Terminate()
|
|
}
|
|
|
|
return
|
|
}
|
|
}
|
|
|
|
func (w *WMail) Terminate() {
|
|
w.Cancel()
|
|
w.TerminateFunc()
|
|
}
|