コード例 #1
0
ファイル: AzureTableChasmRepo.cs プロジェクト: panjkov/Chasm
        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);
        }
コード例 #2
0
ファイル: AzureTableChasmRepo.cs プロジェクト: panjkov/Chasm
        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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
        }