Exemplo n.º 1
0
        public async void AddFileAsync(string fileName)
        {
            if (fileName == null)
            {
                throw new ArgumentNullException(nameof(fileName));
            }
            using (var stream = await _gridFsBucket.OpenUploadStreamAsync(fileName))
            {
                var id = stream.Id;

                await stream.CloseAsync();
            }
        }
Exemplo n.º 2
0
        public async Task CopyAsync(string name, string id, long version, string suffix,
                                    CancellationToken ct = default(CancellationToken))
        {
            try
            {
                var file   = GetFile(name);
                var toFile = GetFile(id, version, suffix);

                file.CopyTo(toFile.FullName);

                using (var readStream = await bucket.OpenDownloadStreamAsync(file.Name, cancellationToken: ct))
                {
                    using (var writeStream =
                               await bucket.OpenUploadStreamAsync(toFile.Name, toFile.Name, cancellationToken: ct))
                    {
                        var buffer = new byte[ChunkSizeBytes];
                        int bytesRead;
                        while ((bytesRead = await readStream.ReadAsync(buffer, 0, buffer.Length, ct)) > 0)
                        {
                            await writeStream.WriteAsync(buffer, 0, bytesRead, ct);
                        }

                        await writeStream.CloseAsync(ct);
                    }
                }
            }
            catch (FileNotFoundException ex)
            {
                throw new AssetNotFoundException($"Asset {name} not found.", ex);
            }
            catch (GridFSException ex)
            {
                throw new AssetNotFoundException($"Asset {name} not found.", ex);
            }
        }
Exemplo n.º 3
0
        public async Task WriteAsync(LuceneDirectory directory, SnapshotDeletionPolicy snapshotter)
        {
            var directoryInfo = ((FSDirectory)directory).Directory;

            var commit = snapshotter.Snapshot();

            try
            {
                var fileId = directoryInfo.Name;

                try
                {
                    await bucket.DeleteAsync(fileId);
                }
                catch (GridFSFileNotFoundException)
                {
                }

                using (var stream = await bucket.OpenUploadStreamAsync(fileId, fileId))
                {
                    using (var zipArchive = new ZipArchive(stream, ZipArchiveMode.Create, true))
                    {
                        foreach (var fileName in commit.FileNames)
                        {
                            var file = new FileInfo(Path.Combine(directoryInfo.FullName, fileName));

                            using (var fileStream = file.OpenRead())
                            {
                                var entry = zipArchive.CreateEntry(fileStream.Name);

                                using (var entryStream = entry.Open())
                                {
                                    await fileStream.CopyToAsync(entryStream);
                                }
                            }
                        }
                    }
                }
            }
            finally
            {
                snapshotter.Release(commit);
            }
        }
Exemplo n.º 4
0
 public async Task <Stream> OpenWriteAsync()
 {
     return(await _bucket.OpenUploadStreamAsync(_fileInfo.Filename));
 }