public Result <string> TryAcquireLease(string containerName, string blobName)
        {
            var path = Path.Combine(_root, containerName, blobName);

            try
            {
                var file = new FileInfo(path);
                if (!file.Exists)
                {
                    return(null);
                }

                using (var stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None))
                    using (var epStream = new MetadataPrefixStream(stream))
                    {
                        var flags = epStream.ReadFlags();
                        if ((flags & 0x1) == 0x1)
                        {
                            // already locked, conflict
                            return(Result <string> .CreateError("Conflict"));
                        }

                        epStream.WriteFlags((byte)(flags | 0x1));
                        return(Result.CreateSuccess(epStream.ReadETag()));
                    }
            }
            catch (FileNotFoundException)
            {
                return(Result <string> .CreateError("NotFound"));
            }
            catch (DirectoryNotFoundException)
            {
                return(Result <string> .CreateError("NotFound"));
            }
        }
        public Result <string> TryRenewLease(string containerName, string blobName, string leaseId)
        {
            var path = Path.Combine(_root, containerName, blobName);

            try
            {
                var file = new FileInfo(path);
                if (!file.Exists)
                {
                    return(null);
                }

                using (var stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None))
                    using (var epStream = new MetadataPrefixStream(stream))
                    {
                        var flags = epStream.ReadFlags();
                        if ((flags & 0x1) == 0x0)
                        {
                            // not locked
                            return(Result <string> .CreateError("NotFound"));
                        }

                        if (leaseId != epStream.ReadETag())
                        {
                            // locked by another leaseId, conflict
                            return(Result <string> .CreateError("Conflict"));
                        }

                        return(Result.CreateSuccess("OK"));
                    }
            }
            catch (FileNotFoundException)
            {
                return(Result <string> .CreateError("NotFound"));
            }
            catch (DirectoryNotFoundException)
            {
                return(Result <string> .CreateError("NotFound"));
            }
        }