Exemplo n.º 1
0
        public void EnqueueUpdate(DocumentIdAndPath document, MetaData meta)
        {
            if (document == null)
            {
                throw new ArgumentNullException("document");
            }
            if (meta == null)
            {
                throw new ArgumentNullException("meta");
            }

            PendingChange item;

            // if there is a pending change (it must be add), replace its metadata
            if (TryGetValue(document.Id, out item))
            {
                Debug.Assert(item.Change == DocumentAction.Add || item.Change == DocumentAction.Delete);

                item.Change = DocumentAction.Update;
                item.Meta   = meta;
            }
            else
            {
                // if no changes pending, add new one
                Add(document.Id,
                    new PendingChange
                {
                    Id     = document.Id,
                    Change = DocumentAction.Update,
                    Meta   = meta,
                });
            }
        }
Exemplo n.º 2
0
        public void EnqueueRemove(DocumentIdAndPath document)
        {
            PendingChange item;

            // if there is a pending change, remove it (the change must not be pending delete)
            if (TryGetValue(document.Id, out item))
            {
                Debug.Assert(item.Change != DocumentAction.Delete);
                if (item.Change == DocumentAction.Add)
                {
                    Remove(document.Id);
                }
                else
                {
                    item.Change          = DocumentAction.Delete;
                    item.DeletedFilePath = document.FilePath;
                }
            }
            else
            {
                // pend delete now
                Add(document.Id,
                    new PendingChange
                {
                    Id              = document.Id,
                    Change          = DocumentAction.Delete,
                    DeletedFilePath = document.FilePath
                });
            }
        }
Exemplo n.º 3
0
 public DocumentStateItem(DocumentIdAndPath document)
 {
     Id       = document.Id;
     FilePath = document.FilePath;
 }