/// <summary> /// Creates an <see cref="AzureLease"/> from a lease token. /// </summary> /// <param name="leaseProvider">The lease provider.</param> /// <param name="token">The lease token from which to construct the lease.</param> /// <returns>An instance of an in-memory lease configured from the lease token.</returns> internal static AzureLease FromToken(AzureLeaseProvider leaseProvider, string token) { if (leaseProvider is null) { throw new ArgumentNullException(nameof(leaseProvider)); } if (token is null) { throw new ArgumentNullException(nameof(token)); } string tokenizedLease = token.Base64UrlDecode(); string[] lines = tokenizedLease.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); if (lines[0] != LeaseTokenContentType) { throw new TokenizationException(); } string id = lines[1]; DateTimeOffset?lastAcquired = lines[2] != NullString ? (DateTimeOffset?)DateTimeOffset.FromUnixTimeMilliseconds(long.Parse(lines[2])) : null; var leasePolicy = new LeasePolicy { Name = lines[5], ActorName = lines[3], Duration = lines[4] != NullString ? (TimeSpan?)TimeSpan.FromMilliseconds(long.Parse(lines[4])) : null, }; return(new AzureLease(leaseProvider, leasePolicy, id, lastAcquired)); }
/// <summary> /// Initializes a new instance of the <see cref="AzureLease"/> class. /// </summary> /// <param name="leaseProvider">The lease provider.</param> /// <param name="leasePolicy">The lease policy.</param> /// <param name="id">The id for the lease.</param> /// <param name="lastAcquired">The time at which the lease was last acquired.</param> internal AzureLease(AzureLeaseProvider leaseProvider, LeasePolicy leasePolicy, string id, DateTimeOffset?lastAcquired) : base(leaseProvider, leasePolicy, id) { this.lastAcquired = lastAcquired; }
/// <summary> /// Initializes a new instance of the <see cref="AzureLease"/> class. /// </summary> /// <param name="leaseProvider">The lease provider.</param> /// <param name="leasePolicy">The lease policy.</param> /// <param name="id">The id for the lease.</param> internal AzureLease(AzureLeaseProvider leaseProvider, LeasePolicy leasePolicy, string id) : base(leaseProvider, leasePolicy, id) { }