/// <summary> /// Creates an <see cref="InMemoryLease"/> 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 InMemoryLease FromToken(InMemoryLeaseProvider 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 InMemoryLease(leaseProvider, leasePolicy, id, lastAcquired)); }
/// <summary> /// Initializes a new instance of the <see cref="InMemoryLease"/> class. /// </summary> /// <param name="leaseProvider"> /// The lease provider. /// </param> /// <param name="leasePolicy"> /// The lease policy. /// </param> /// <param name="id"> /// The id. /// </param> /// <param name="lastAcquired">The time at which the lease was last acquired.</param> public InMemoryLease(InMemoryLeaseProvider leaseProvider, LeasePolicy leasePolicy, string id, DateTimeOffset?lastAcquired) : base(leaseProvider, leasePolicy, id) { this.lastAcquired = lastAcquired; }
/// <summary> /// Initializes a new instance of the <see cref="InMemoryLease"/> class. /// </summary> /// <param name="leaseProvider"> /// The lease provider. /// </param> /// <param name="leasePolicy"> /// The lease policy. /// </param> /// <param name="id"> /// The id. /// </param> public InMemoryLease(InMemoryLeaseProvider leaseProvider, LeasePolicy leasePolicy, string id) : base(leaseProvider, leasePolicy, id) { this.SetLastAcquired(); }