| 12345678910111213141516171819202122232425262728293031 | 
							- package taskmonitor
 
- import (
 
- 	"time"
 
- 	F "github.com/sagernet/sing/common/format"
 
- 	"github.com/sagernet/sing/common/logger"
 
- )
 
- type Monitor struct {
 
- 	logger  logger.Logger
 
- 	timeout time.Duration
 
- 	timer   *time.Timer
 
- }
 
- func New(logger logger.Logger, timeout time.Duration) *Monitor {
 
- 	return &Monitor{
 
- 		logger:  logger,
 
- 		timeout: timeout,
 
- 	}
 
- }
 
- func (m *Monitor) Start(taskName ...any) {
 
- 	m.timer = time.AfterFunc(m.timeout, func() {
 
- 		m.logger.Warn(F.ToString(taskName...), " take too much time to finish!")
 
- 	})
 
- }
 
- func (m *Monitor) Finish() {
 
- 	m.timer.Stop()
 
- }
 
 
  |