Beispiel #1
0
        public async Task InitializeAsync()
        {
            if (_initialized != null)
            {
                throw new InvalidOperationException("InitializeAsync has already been called");
            }

            var doesExist = await _storageFacade.DoesExistAsync(_blobName);

            if (!doesExist)
            {
                await _storageFacade.CreateEmptyBlockBlobAsync(_blobName);
            }

            var leaseController = new LeaseController(_logger, _storageFacade);
            var lease           = await leaseController.AcquireLeaseAsync(
                _blobName,
                TimeSpan.FromMinutes(1));

            if (lease == null)
            {
                throw new CosbakException($"Can't lease '{_blobName}' blob");
            }
            else
            {
                var blocks = await _storageFacade.GetBlocksAsync(_blobName);

                var indexFat = blocks.Count == 0
                    ? new IndexFat()
                    : await LoadFatAsync((int)blocks[0].Length);

                _initialized = new Initialized(lease, indexFat);
            }
        }