Skip to content

Commit a241cf3

Browse files
track job completion and handle initial full sync
1 parent a0e5382 commit a241cf3

3 files changed

Lines changed: 12 additions & 3 deletions

File tree

FileSyncApp/Program.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ static void RunProgram()
9999
}
100100

101101
log.LogInformation("reading config file {A}", "config.json");
102-
Dictionary<string, IFileJobOptions> readJobOptions=new Dictionary<string, IFileJobOptions>();
102+
Dictionary<string, IFileJobOptions> readJobOptions = new Dictionary<string, IFileJobOptions>();
103103
try
104104
{
105105
readJobOptions = JsonConvert.DeserializeObject<Dictionary<string, IFileJobOptions>>(File.ReadAllText("config.json"), jsonSettings);
@@ -109,17 +109,20 @@ static void RunProgram()
109109
log.LogCritical(exc, "exception reading config file {A}", "config.json");
110110
return;
111111
}
112-
112+
113113
foreach (var jobOption in readJobOptions)
114114
{
115-
116115
jobOption.Value.Logger = LoggerFactory.CreateLogger(jobOption.Key);
117116
Jobs.Add(jobOption.Key, FileSyncJob.CreateJob(jobOption.Value));
118117
}
119118
JobsReady?.Invoke(null, EventArgs.Empty);
119+
Dictionary<IFileJob, bool> jobsDone = new Dictionary<IFileJob, bool>();
120120
foreach (var job in Jobs)
121121
{
122+
jobsDone.Add(job.Value, false);
123+
job.Value.JobFinished += (s, e) => { jobsDone[(IFileJob)s] = true; if (jobsDone.All(x => x.Value)) if (!File.Exists("fullsync.done")) File.Create("fullsync.done"); };
122124
job.Value.StartJob();
125+
123126
}
124127
log.LogInformation("Press Ctrl+C to exit");
125128
while (keepRunning)

FileSyncLibNet/FileSyncJob/FileSyncJob.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public class FileSyncJob : IFileJob
1818
private readonly Timer timer;
1919
private readonly ISyncProvider syncProvider;
2020
private volatile bool v_jobRunning = false;
21+
public static bool InitialFullSync { get; set; } = false;
2122

2223
private FileSyncJob(IFileJobOptions fileSyncJobOptions)
2324
{

FileSyncLibNet/SyncProviders/AbstractProvider.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ public override void SyncSourceToDest()
117117
DateTimeOffset.MinValue :
118118
DateTimeOffset.Now - jobOptions.MaxAge - jobOptions.Interval;
119119
}
120+
if (!System.IO.File.Exists("fullsync.done"))
121+
{
122+
logger.LogWarning("fullsync.done not found, syncing all files for initial run");
123+
minimumLastWriteTime = DateTimeOffset.MinValue;
124+
}
120125

121126
bool error_occured = false;
122127
try

0 commit comments

Comments
 (0)