/// <summary> /// Synchronize between CMIS folder and local folder. /// </summary> public void Sync(bool syncFull) { lock (syncLock) { manualResetEvent.Reset(); repo.OnSyncStart(syncFull); // If not connected, connect. if (session == null) { Connect(); firstSync = true; } IFolder remoteFolder = (IFolder)session.GetObjectByPath(remoteFolderPath); string localFolder = repoinfo.TargetDirectory; if (firstSync) { CrawlSync(remoteFolder, localFolder); firstSync = false; } else { if (ChangeLogCapability) { // ChangeLog sync... ChangeLogSync(remoteFolder); WatcherSync(remoteFolderPath, localFolder); } else { // No ChangeLog capability, so we have to crawl remote and local folders. WatcherSync(remoteFolderPath, localFolder); if (syncFull) { CrawlSync(remoteFolder, localFolder); } } } } }