Ejemplo n.º 1
0
        private RavenJArray GetAttachments(int start, Guid?etag)
        {
            var array           = new RavenJArray();
            var attachmentInfos = _database.GetAttachments(start, 128, etag);

            foreach (var attachmentInfo in attachmentInfos)
            {
                var attachment = _database.GetStatic(attachmentInfo.Key);
                if (attachment == null)
                {
                    return(null);
                }
                var data = attachment.Data;
                attachment.Data = () =>
                {
                    var memoryStream = new MemoryStream();
                    _database.TransactionalStorage.Batch(accessor => data().CopyTo(memoryStream));
                    memoryStream.Position = 0;
                    return(memoryStream);
                };

                var bytes = attachment.Data().ReadData();
                array.Add(
                    new RavenJObject
                {
                    { "Data", bytes },
                    { "Metadata", attachmentInfo.Metadata },
                    { "Key", attachmentInfo.Key },
                    { "Etag", new RavenJValue(attachmentInfo.Etag.ToString()) }
                });
            }
            return(array);
        }