protected override ReplicationBatchItem CloneInternal(JsonOperationContext context)
        {
            var item   = new AttachmentTombstoneReplicationItem();
            var keyMem = Key.CloneToJsonContext(context, out item.Key);

            item.ToDispose(new DisposableAction(() =>
            {
                context.ReturnMemory(keyMem);
            }));

            return(item);
        }
예제 #2
0
        public static unsafe ReplicationBatchItem From(DocumentsOperationContext context, Tombstone doc)
        {
            switch (doc.Type)
            {
            case Tombstone.TombstoneType.Document:
                return(new DocumentReplicationItem
                {
                    Type = ReplicationBatchItem.ReplicationItemType.DocumentTombstone,
                    Etag = doc.Etag,
                    Id = doc.LowerId,
                    TransactionMarker = doc.TransactionMarker,
                    ChangeVector = doc.ChangeVector,
                    Collection = doc.Collection,
                    Flags = doc.Flags,
                    LastModifiedTicks = doc.LastModified.Ticks
                });

            case Tombstone.TombstoneType.Attachment:
                var item = new AttachmentTombstoneReplicationItem
                {
                    Type = ReplicationBatchItem.ReplicationItemType.AttachmentTombstone,
                    Etag = doc.Etag,
                    TransactionMarker = doc.TransactionMarker,
                    ChangeVector      = doc.ChangeVector
                };

                item.ToDispose(Slice.From(context.Allocator, doc.LowerId.Buffer, doc.LowerId.Size, ByteStringType.Immutable, out item.Key));
                return(item);

            case Tombstone.TombstoneType.Revision:
                return(new RevisionTombstoneReplicationItem
                {
                    Type = ReplicationBatchItem.ReplicationItemType.RevisionTombstone,
                    Etag = doc.Etag,
                    Id = doc.LowerId,
                    TransactionMarker = doc.TransactionMarker,
                    ChangeVector = doc.ChangeVector,
                    Collection = doc.Collection
                });

            default:
                throw new ArgumentOutOfRangeException(nameof(doc.Type));
            }
        }