public RollingBlobWriter(IBlobNamingStrategy namingStrategy, IColdStorageInstrumentationPublisher instrumentationPublisher, CloudStorageAccount storageAccount, string containerName, int rollSizeMb, int blocksAllowed = MaxBlocksAllowed, int blockSize = MaxBlockSize) { Guard.ArgumentNotNullOrEmpty(containerName, "containerName"); Guard.ArgumentGreaterOrEqualThan(1, blocksAllowed, "blocksAllowed"); Guard.ArgumentLowerOrEqualThan(MaxBlocksAllowed, blocksAllowed, "blocksAllowed"); Guard.ArgumentGreaterOrEqualThan(1, blockSize, "blockSize"); Guard.ArgumentLowerOrEqualThan(MaxBlockSize, blockSize, "blockSize"); Guard.ArgumentGreaterOrEqualThan(1, rollSizeMb, "rollSizeMb"); Guard.ArgumentNotNull(instrumentationPublisher, "instrumentationPublisher"); _rollSizeBytes = rollSizeMb * (long)MegaBytes; Guard.ArgumentLowerOrEqualThan(blocksAllowed * (long)blockSize, _rollSizeBytes, "rollSizeMb"); _blobClient = storageAccount.CreateCloudBlobClient(); _containerName = containerName; _namingStrategy = namingStrategy; _instrumentationPublisher = instrumentationPublisher; _blocksAllowed = blocksAllowed; _blockSize = blockSize; }