private RavenJArray GetAttachments(int start, Etag etag)
{
var array = new RavenJArray();
var attachmentInfos = _database.GetAttachments(start, 128, etag, null, 1024 * 1024 * 10);
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;
}