MCPcopy
hub / github.com/syncthing/syncthing / serve

Method serve

lib/model/model.go:268–294  ·  view source on GitHub ↗
(ctx context.Context)

Source from the content-addressed store, hash-verified

266}
267
268func (m *model) serve(ctx context.Context) error {
269 defer m.closeAllConnectionsAndWait()
270
271 cfg := m.cfg.Subscribe(m)
272 defer m.cfg.Unsubscribe(m)
273
274 if err := m.initFolders(cfg); err != nil {
275 close(m.started)
276 return svcutil.AsFatalErr(err, svcutil.ExitError)
277 }
278
279 close(m.started)
280
281 for {
282 select {
283 case <-ctx.Done():
284 l.Debugln(m, "context closed, stopping", ctx.Err())
285 return ctx.Err()
286 case err := <-m.fatalChan:
287 l.Debugln(m, "fatal error, stopping", err)
288 return svcutil.AsFatalErr(err, svcutil.ExitError)
289 case <-m.promotionTimer.C:
290 slog.Debug("Promotion timer fired")
291 m.promoteConnections()
292 }
293 }
294}
295
296func (m *model) initFolders(cfg config.Configuration) error {
297 clusterConfigDevices := make(deviceIDSet, len(cfg.Devices))

Callers 1

ServeMethod · 0.45

Calls 8

initFoldersMethod · 0.95
promoteConnectionsMethod · 0.95
AsFatalErrFunction · 0.92
DoneMethod · 0.80
DebuglnMethod · 0.80
SubscribeMethod · 0.65
UnsubscribeMethod · 0.65

Tested by

no test coverage detected