Ejemplo n.º 1
0
        public async IAsyncEnumerable <PartitionSnapshot> LoadSnapshotsAsync()
        {
            const string ignoreContainerName = "nosqlsnapshots";


            await foreach (var container in _storageAccount.GetListOfContainersAsync())
            {
                if (container.Name == ignoreContainerName)
                {
                    continue;
                }

                await foreach (var blockBlob in container.GetListOfBlobsAsync())
                {
                    var memoryStream = new MemoryStream();

                    await blockBlob.DownloadToStreamAsync(memoryStream);

                    var snapshot = new PartitionSnapshot
                    {
                        TableName    = container.Name,
                        PartitionKey = blockBlob.Name.Base64ToString(),
                        Snapshot     = memoryStream.ToArray()
                    };

                    yield return(snapshot);

                    Console.WriteLine("Loaded snapshot: " + snapshot);
                }
            }
        }
        public async Task LoadSnapshotsAsync(Action <IEnumerable <string> > tablesCallback, Action <PartitionSnapshot> callbackPartitionSnapshot)
        {
            const string ignoreContainerName = "nosqlsnapshots";

            var containers = await _storageAccount.GetListOfContainersAsync();

            tablesCallback(containers.Select(itm => itm.Name).Where(name => name != ignoreContainerName));

            foreach (var container in containers.Where(c => c.Name != ignoreContainerName))
            {
                await foreach (var blockBlob in container.GetListOfBlobsAsync())
                {
                    var memoryStream = new MemoryStream();

                    await blockBlob.DownloadToStreamAsync(memoryStream);

                    var snapshot = new PartitionSnapshot
                    {
                        TableName    = container.Name,
                        PartitionKey = blockBlob.Name.Base64ToString(),
                        Snapshot     = memoryStream.ToArray()
                    };

                    callbackPartitionSnapshot(snapshot);

                    Console.WriteLine("Loaded snapshot: " + snapshot);
                }
            }
        }
Ejemplo n.º 3
0
        public async IAsyncEnumerable <ITableLoader> LoadTablesAsync()
        {
            await foreach (var container in _storageAccount.GetListOfContainersAsync())
            {
                if (container.Name == SystemFileNames.SystemContainerName)
                {
                    continue;
                }

                var tableMetadata = await TableMetadataSaver.GetTableMetadataAsync(container);

                var loader = new AzurePartitionsLoader(container, tableMetadata.Persist);

                yield return(loader);
            }
        }