(ctx context.Context, fsrc, fdst fs.Fs, files bilib.Names, queueName string)
| 224 | } |
| 225 | |
| 226 | func (b *bisyncRun) fastCopy(ctx context.Context, fsrc, fdst fs.Fs, files bilib.Names, queueName string) ([]Results, error) { |
| 227 | if b.InGracefulShutdown { |
| 228 | return nil, nil |
| 229 | } |
| 230 | ctx = b.preCopy(ctx) |
| 231 | if err := b.saveQueue(files, queueName); err != nil { |
| 232 | return nil, err |
| 233 | } |
| 234 | |
| 235 | ctxCopy, filterCopy := filter.AddConfig(b.opt.setDryRun(ctx)) |
| 236 | for _, file := range files.ToList() { |
| 237 | if err := filterCopy.AddFile(file); err != nil { |
| 238 | return nil, err |
| 239 | } |
| 240 | alias := b.aliases.Alias(file) |
| 241 | if alias != file { |
| 242 | if err := filterCopy.AddFile(alias); err != nil { |
| 243 | return nil, err |
| 244 | } |
| 245 | } |
| 246 | } |
| 247 | |
| 248 | b.SyncCI = fs.GetConfig(ctxCopy) // allows us to request graceful shutdown |
| 249 | accounting.Stats(ctxCopy).SetMaxCompletedTransfers(-1) // we need a complete list in the event of graceful shutdown |
| 250 | ctxCopy, b.CancelSync = context.WithCancel(ctxCopy) |
| 251 | b.testFn() |
| 252 | err := sync.Sync(ctxCopy, fdst, fsrc, b.opt.CreateEmptySrcDirs) |
| 253 | prettyprint(b.queueOpt.logger, "b.queueOpt.logger", fs.LogLevelDebug) |
| 254 | |
| 255 | getResults := ReadResults(b.queueOpt.logger.JSON) |
| 256 | fs.Debugf(nil, "Got %v results for %v", len(getResults), queueName) |
| 257 | |
| 258 | lineFormat := "%s %8d %s %s %s %q\n" |
| 259 | for _, result := range getResults { |
| 260 | fs.Debugf(nil, lineFormat, result.Flags, result.Size, result.Hash, "", result.Modtime, result.Name) |
| 261 | } |
| 262 | |
| 263 | return getResults, err |
| 264 | } |
| 265 | |
| 266 | func (b *bisyncRun) retryFastCopy(ctx context.Context, fsrc, fdst fs.Fs, files bilib.Names, queueName string, results []Results, err error) ([]Results, error) { |
| 267 | ci := fs.GetConfig(ctx) |
no test coverage detected