public void TemporaryBlobReferencesAreUnique() { var expiration = new DateTime(2100, 12, 31); var firstBlobRef = TemporaryBlobName <int> .GetNew(expiration); var secondBlobRef = TemporaryBlobName <int> .GetNew(expiration); Assert.AreNotEqual(firstBlobRef.Suffix, secondBlobRef.Suffix, "two different temporary blob references should have different prefix"); }
protected override void Start(SquareMessage message) { if (message.IsStart) { var counterName = TemporaryBlobName <decimal> .GetNew(message.Expiration); var counter = new BlobCounter(Blobs, counterName); counter.Reset(BlobCounter.Aleph); var blobNames = Blobs.ListBlobNames(message.ContainerName).ToList(); foreach (var blobName in blobNames) { Put(new SquareMessage { BlobName = blobName, ContainerName = message.ContainerName, IsStart = false, BlobCounter = counterName }); } // dealing with rare race condition if (0m >= counter.Increment(-BlobCounter.Aleph + blobNames.Count)) { Finish(counter); } } else { var value = Blobs.GetBlob <double>(message.ContainerName, message.BlobName).Value; Blobs.PutBlob(message.ContainerName, message.BlobName, value * value); var counter = new BlobCounter(Blobs, message.BlobCounter); if (0m >= counter.Increment(-1)) { Finish(counter); } } }