all: Implement suture v4-api (#6947)
This commit is contained in:
@@ -17,9 +17,8 @@ import (
|
||||
"github.com/syncthing/syncthing/lib/config"
|
||||
"github.com/syncthing/syncthing/lib/dialer"
|
||||
"github.com/syncthing/syncthing/lib/events"
|
||||
"github.com/syncthing/syncthing/lib/util"
|
||||
|
||||
"github.com/thejerf/suture"
|
||||
"github.com/thejerf/suture/v4"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -45,18 +44,15 @@ type FailureHandler interface {
|
||||
}
|
||||
|
||||
func NewFailureHandler(cfg config.Wrapper, evLogger events.Logger) FailureHandler {
|
||||
h := &failureHandler{
|
||||
return &failureHandler{
|
||||
cfg: cfg,
|
||||
evLogger: evLogger,
|
||||
optsChan: make(chan config.OptionsConfiguration),
|
||||
buf: make(map[string]*failureStat),
|
||||
}
|
||||
h.Service = util.AsServiceWithError(h.serve, h.String())
|
||||
return h
|
||||
}
|
||||
|
||||
type failureHandler struct {
|
||||
suture.Service
|
||||
cfg config.Wrapper
|
||||
evLogger events.Logger
|
||||
optsChan chan config.OptionsConfiguration
|
||||
@@ -68,7 +64,7 @@ type failureStat struct {
|
||||
count int
|
||||
}
|
||||
|
||||
func (h *failureHandler) serve(ctx context.Context) error {
|
||||
func (h *failureHandler) Serve(ctx context.Context) error {
|
||||
go func() {
|
||||
select {
|
||||
case h.optsChan <- h.cfg.Options():
|
||||
|
||||
@@ -29,9 +29,6 @@ import (
|
||||
"github.com/syncthing/syncthing/lib/scanner"
|
||||
"github.com/syncthing/syncthing/lib/upgrade"
|
||||
"github.com/syncthing/syncthing/lib/ur/contract"
|
||||
"github.com/syncthing/syncthing/lib/util"
|
||||
|
||||
"github.com/thejerf/suture"
|
||||
)
|
||||
|
||||
// Current version number of the usage report, for acceptance purposes. If
|
||||
@@ -42,7 +39,6 @@ const Version = 3
|
||||
var StartTime = time.Now()
|
||||
|
||||
type Service struct {
|
||||
suture.Service
|
||||
cfg config.Wrapper
|
||||
model model.Model
|
||||
connectionsService connections.Service
|
||||
@@ -51,15 +47,13 @@ type Service struct {
|
||||
}
|
||||
|
||||
func New(cfg config.Wrapper, m model.Model, connectionsService connections.Service, noUpgrade bool) *Service {
|
||||
svc := &Service{
|
||||
return &Service{
|
||||
cfg: cfg,
|
||||
model: m,
|
||||
connectionsService: connectionsService,
|
||||
noUpgrade: noUpgrade,
|
||||
forceRun: make(chan struct{}, 1), // Buffered to prevent locking
|
||||
}
|
||||
svc.Service = util.AsService(svc.serve, svc.String())
|
||||
return svc
|
||||
}
|
||||
|
||||
// ReportData returns the data to be sent in a usage report with the currently
|
||||
@@ -362,7 +356,7 @@ func (s *Service) sendUsageReport(ctx context.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Service) serve(ctx context.Context) {
|
||||
func (s *Service) Serve(ctx context.Context) error {
|
||||
s.cfg.Subscribe(s)
|
||||
defer s.cfg.Unsubscribe(s)
|
||||
|
||||
@@ -370,7 +364,7 @@ func (s *Service) serve(ctx context.Context) {
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
return ctx.Err()
|
||||
case <-s.forceRun:
|
||||
t.Reset(0)
|
||||
case <-t.C:
|
||||
|
||||
Reference in New Issue
Block a user