MCPcopy
hub / github.com/syncthing/syncthing / newFolder

Function newFolder

lib/model/folder.go:104–147  ·  view source on GitHub ↗
(model *model, ignores *ignore.Matcher, cfg config.FolderConfiguration, evLogger events.Logger, ioLimiter *semaphore.Semaphore, ver versioner.Versioner)

Source from the content-addressed store, hash-verified

102}
103
104func newFolder(model *model, ignores *ignore.Matcher, cfg config.FolderConfiguration, evLogger events.Logger, ioLimiter *semaphore.Semaphore, ver versioner.Versioner) *folder {
105 f := folder{
106 stateTracker: newStateTracker(cfg.ID, evLogger),
107 FolderConfiguration: cfg,
108 FolderStatisticsReference: stats.NewFolderStatisticsReference(db.NewTyped(model.sdb, "folderstats/"+cfg.ID)),
109 ioLimiter: ioLimiter,
110
111 model: model,
112 shortID: model.shortID,
113 db: model.sdb,
114 ignores: ignores,
115 mtimefs: cfg.Filesystem(fs.NewMtimeOption(model.sdb, cfg.ID)),
116 modTimeWindow: cfg.ModTimeWindow(),
117 done: make(chan struct{}),
118 sl: slog.Default().With(cfg.LogAttr()),
119
120 scanInterval: time.Duration(cfg.RescanIntervalS) * time.Second,
121 scanTimer: time.NewTimer(0), // The first scan should be done immediately.
122 scanDelay: make(chan time.Duration),
123 initialScanFinished: make(chan struct{}),
124 scanScheduled: make(chan struct{}, 1),
125 versionCleanupInterval: time.Duration(cfg.Versioning.CleanupIntervalS) * time.Second,
126 versionCleanupTimer: time.NewTimer(time.Duration(cfg.Versioning.CleanupIntervalS) * time.Second),
127
128 pullScheduled: make(chan struct{}, 1), // This needs to be 1-buffered so that we queue a pull if we're busy when it comes.
129
130 doInSyncChan: make(chan syncRequest),
131
132 forcedRescanRequested: make(chan struct{}, 1),
133 forcedRescanPaths: make(map[string]struct{}),
134
135 watchCancel: func() {},
136 restartWatchChan: make(chan struct{}, 1),
137
138 versioner: ver,
139 }
140 f.pullPause = f.pullBasePause()
141 f.pullFailTimer = time.NewTimer(0)
142 <-f.pullFailTimer.C
143
144 registerFolderMetrics(f.ID)
145
146 return &f
147}
148
149func (f *folder) Serve(ctx context.Context) error {
150 f.model.foldersRunning.Add(1)

Callers 2

newSendReceiveFolderFunction · 0.85
newSendOnlyFolderFunction · 0.85

Calls 9

pullBasePauseMethod · 0.95
NewTypedFunction · 0.92
NewMtimeOptionFunction · 0.92
newStateTrackerFunction · 0.85
FilesystemMethod · 0.80
ModTimeWindowMethod · 0.80
registerFolderMetricsFunction · 0.70
LogAttrMethod · 0.45

Tested by

no test coverage detected