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); }
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)); } }