示例#1
0
        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");
        }
示例#2
0
            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);
                    }
                }
            }