public AzureTableChasmRepo(CloudStorageAccount storageAccount, DiskChasmRepo diskRepo) : base(diskRepo.Serializer) { if (storageAccount == null) { throw new ArgumentNullException(nameof(storageAccount)); } // File staging repo _diskRepo = diskRepo ?? throw new ArgumentNullException(nameof(diskRepo)); CloudTableClient client = storageAccount.CreateCloudTableClient(); // Objects _objectsTable = new Lazy <CloudTable>(() => { const string container = "objects"; CloudTable tr = client.GetTableReference(container); tr.CreateIfNotExistsAsync().Wait(); return(tr); }, LazyThreadSafetyMode.PublicationOnly); // Refs _refsTable = new Lazy <CloudTable>(() => { const string table = "refs"; CloudTable tr = client.GetTableReference(table); tr.CreateIfNotExistsAsync().Wait(); return(tr); }, LazyThreadSafetyMode.PublicationOnly); }
public static AzureTableChasmRepo Create(string connectionString, DiskChasmRepo diskRepo) { if (string.IsNullOrWhiteSpace(connectionString)) { throw new ArgumentNullException(nameof(connectionString)); } if (diskRepo == null) { throw new ArgumentNullException(nameof(diskRepo)); } var storageAccount = CloudStorageAccount.Parse(connectionString); var repo = new AzureTableChasmRepo(storageAccount, diskRepo); return(repo); }
public static async Task DiskChasmRepo_Test() { string tmp = Path.GetTempFileName(); File.Delete(tmp); try { if (!tmp.EndsWith('/')) { tmp += '/'; } using (var serializer = new JsonChasmSerializer()) { var repo = new DiskChasmRepo(tmp, serializer); await TestRepository(repo); } } finally { Directory.Delete(tmp, true); } }
public AzureBlobChasmRepo(CloudStorageAccount storageAccount, DiskChasmRepo diskRepo) : base(diskRepo.Serializer) { if (storageAccount == null) { throw new ArgumentNullException(nameof(storageAccount)); } // File staging repo _diskRepo = diskRepo ?? throw new ArgumentNullException(nameof(diskRepo)); CloudBlobClient client = storageAccount.CreateCloudBlobClient(); client.DefaultRequestOptions.ParallelOperationThreadCount = 4; // Default is 1 // Objects _objectsContainer = new Lazy <CloudBlobContainer>(() => { const string container = "objects"; CloudBlobContainer tr = client.GetContainerReference(container); tr.CreateIfNotExistsAsync().Wait(); return(tr); }, LazyThreadSafetyMode.PublicationOnly); // Refs _refsContainer = new Lazy <CloudBlobContainer>(() => { const string container = "refs"; CloudBlobContainer tr = client.GetContainerReference(container); tr.CreateIfNotExistsAsync().Wait(); return(tr); }, LazyThreadSafetyMode.PublicationOnly); }