Beispiel #1
0
        public static IEnumerable <ItemMetadataAdaptor> GetAllMetadataItems(SyncId replicaId)
        {
            FilterElement filterEl = new FilterElement(SynchronizationMetadataRow.ColumnReplicaId, FilterElementType.Equal,
                                                       replicaId.GetGuidId());

            return(SynchronizationMetadataRow.List(filterEl).Select(x => new ItemMetadataAdaptor(x)));
        }
Beispiel #2
0
        public void SyncFileSystemReplicasOneWay(
            SyncId sourceReplicaId,
            SyncId destinationReplicaId,
            string sourceReplicaRootPath,
            string destinationReplicaRootPath,
            FileSyncScopeFilter filter,
            FileSyncOptions options)
        {
            using (var sourceProvider = createFileSyncProvider(
                sourceReplicaId.GetGuidId(),
                sourceReplicaRootPath,
                filter,
                options))
            using (var destinationProvider = createFileSyncProvider(
                destinationReplicaId.GetGuidId(),
                destinationReplicaRootPath,
                filter,
                options))
            {
                destinationProvider.AppliedChange += destinationProvider_AppliedChange;
                destinationProvider.SkippedChange += destinationProvider_SkippedChange;

                sourceProvider.DetectChanges();
                destinationProvider.DetectChanges();

                synchronizeProviders(destinationProvider, sourceProvider);
            }
        }
Beispiel #3
0
 public void DetectChangesOnFileSystemReplica(
     SyncId replicaId,
     string replicaRootPath,
     FileSyncScopeFilter filter,
     FileSyncOptions options)
 {
     using (var provider = createFileSyncProvider(replicaId.GetGuidId(), replicaRootPath, filter, options))
         provider.DetectChanges();
 }
        /// <summary>
        /// Открывает хранилище метаданных реплики по ее replicaId.
        /// </summary>
        /// <param name="replicaId">The replica id.</param>
        /// <returns></returns>
        public static ReplicaMetadataAdaptor CreateInstance(SyncId replicaId)
        {
            ReplicaMetadataAdaptor    retVal = null;
            SynchronizationReplicaRow row    = null;

            row    = new SynchronizationReplicaRow(replicaId.GetGuidId());
            retVal = new ReplicaMetadataAdaptor(row);

            return(retVal);
        }
Beispiel #5
0
        public static ItemMetadataAdaptor CreateInstance(SyncId globalId, SyncId replicaId)
        {
            SynchronizationMetadataRow row    = new SynchronizationMetadataRow();
            ItemMetadataAdaptor        retVal = new ItemMetadataAdaptor(row);

            row.Id        = Guid.NewGuid();
            row.UniqueId  = globalId.GetSyncGlobalId().UniqueId;
            row.Prefix    = (long)globalId.GetSyncGlobalId().Prefix;
            row.ReplicaId = replicaId.GetGuidId();
            return(retVal);
        }
        /// <summary>
        /// Создает новое хранилище метаданных реплики
        /// </summary>
        /// <param name="replicaId">The replica id.</param>
        /// <param name="idFormats">The id formats.</param>
        /// <returns></returns>
        public static ReplicaMetadataAdaptor CreateInstance(SyncId replicaId, SyncIdFormatGroup idFormats)
        {
            SynchronizationReplicaRow row = new SynchronizationReplicaRow();

            row.TickCount = 1;
            ReplicaMetadataAdaptor retVal = new ReplicaMetadataAdaptor(row);

            retVal._replicaRow.PrimaryKeyId = replicaId.GetGuidId();
            retVal.ReplicaKeyMap            = new ReplicaKeyMap(idFormats, replicaId);
            retVal.CurrentKnowledge         = new SyncKnowledge(idFormats, retVal.ReplicaKeyMap, (ulong)retVal.TickCount);
            retVal.ForgottenKnowledge       = new ForgottenKnowledge(idFormats, retVal.CurrentKnowledge);
            return(retVal);
        }
Beispiel #7
0
        public static ItemMetadataAdaptor FindMetadataItemById(SyncId replicaId, SyncId globalId)
        {
            ItemMetadataAdaptor retVal   = null;
            FilterElement       filterEl = new AndBlockFilterElement();

            filterEl.ChildElements.Add(new FilterElement(SynchronizationMetadataRow.ColumnReplicaId, FilterElementType.Equal,
                                                         replicaId.GetGuidId()));
            filterEl.ChildElements.Add(new FilterElement(SynchronizationMetadataRow.ColumnUniqueId, FilterElementType.Equal,
                                                         globalId.GetSyncGlobalId().UniqueId));
            filterEl.ChildElements.Add(new FilterElement(SynchronizationMetadataRow.ColumnPrefix, FilterElementType.Equal,
                                                         (long)globalId.GetSyncGlobalId().Prefix));

            SynchronizationMetadataRow[] itemRows = SynchronizationMetadataRow.List(filterEl);
            if (itemRows.Length != 0)
            {
                retVal = new ItemMetadataAdaptor(itemRows[0]);
            }

            return(retVal);
        }
Beispiel #8
0
        public static void DetectChangesOnFileSystemReplica(
            SyncId syncid, string replicaRootPath,
            FileSyncScopeFilter filter, FileSyncOptions options,
            DirectoryInfo syncDir,
            string metadataName)
        {
            FileSyncProvider provider = null;

            try
            {
                provider = new FileSyncProvider(
                    syncid.GetGuidId(), replicaRootPath, filter, options, syncDir.FullName, metadataName, syncDir.FullName, null);
                provider.DetectChanges();
            }
            finally
            {
                // Release resources
                if (provider != null)
                    provider.Dispose();
            }
        }
Beispiel #9
0
        public static void SyncFileSystemReplicasOneWay(
            SyncId sourceId, SyncId destId,
            string sourceReplicaRootPath, string destinationReplicaRootPath,
            DirectoryInfo syncDir,
            string sourceMetadata, string targetMetadata,
            FileSyncScopeFilter filter, FileSyncOptions options)
        {
            FileSyncProvider sourceProvider = null;
            FileSyncProvider destinationProvider = null;

            try
            {
                sourceProvider = new FileSyncProvider(
                    sourceId.GetGuidId(), sourceReplicaRootPath, filter, options, syncDir.FullName, sourceMetadata, syncDir.FullName,
                    null);
                destinationProvider = new FileSyncProvider(
                    destId.GetGuidId(), destinationReplicaRootPath, filter, options, syncDir.FullName, targetMetadata, syncDir.FullName,
                    null);

                destinationProvider.AppliedChange += OnAppliedChange;
                destinationProvider.SkippedChange += OnSkippedChange;

                SyncOrchestrator agent = new SyncOrchestrator
                {
                    LocalProvider = sourceProvider,
                    RemoteProvider = destinationProvider,
                    Direction = SyncDirectionOrder.Upload
                };
                // Sync source to destination

                //Console.WriteLine("Synchronizing changes to replica: " +
                //   destinationProvider.RootDirectoryPath);
                agent.Synchronize();
            }
            finally
            {
                // Release resources
                if (sourceProvider != null) sourceProvider.Dispose();
                if (destinationProvider != null) destinationProvider.Dispose();
            }
        }
Beispiel #10
0
        //Quick debug mechanism to show what the store "knows" and what it contains...
        public override string ToString()
        {
            StringBuilder buffer = new StringBuilder();

            if (_metadataStore == null)
            {
                InitializeMetadataStore();
                buffer.AppendFormat("{2}Provider {0} has the following for Knowledge: {1}{2}", _replicaId.GetGuidId(), _metadata.GetKnowledge().ToString(), Environment.NewLine);
                CloseMetadataStore();
            }
            else
            {
                buffer.AppendFormat("{2}Provider {0} has the following for Knowledge: {1}{2}", _replicaId.GetGuidId(), _metadata.GetKnowledge().ToString(), Environment.NewLine);
            }
            return(buffer.ToString());
        }
Beispiel #11
0
 private SyncId createNewReplicaId(string idFilePath)
 {
     SyncId replicaId;
     using (var idFile = File.Open(
         idFilePath,
         FileMode.OpenOrCreate,
         FileAccess.ReadWrite))
     using (var sw = new StreamWriter(idFile))
     {
         replicaId = new SyncId(Guid.NewGuid());
         sw.WriteLine(replicaId.GetGuidId().ToString("D"));
     }
     return replicaId;
 }
Beispiel #12
0
        protected virtual FileSyncProvider GenerateProvider()
        {
            SyncId syncId = new SyncId(Guid.NewGuid());

            return(new FileSyncProvider(syncId.GetGuidId(), ReplicaRootPath, ScopeFilter, SyncOptions));
        }