示例#1
0
            /// <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);
                            }
                        }
                    }
                }
            }