Class: Farce::Abstract::Lease Abstract
- Inherits:
-
Object
- Object
- Farce::Abstract::Lease
- Includes:
- Internal::Noncopyable, Internal::Inspect
- Defined in:
- lib/farce/abstract/lease.rb
Overview
Shared checkout, return, ownership, and retirement behavior for leases.
Direct Known Subclasses
Instance Method Summary collapse
-
#available? ⇒ Boolean
Whether the resource is available for checkout.
-
#checked_out? ⇒ Boolean
Whether the resource is checked out.
-
#checkin(resource) ⇒ self
Return an explicitly checked-out resource or a replacement.
-
#checkout(timeout: nil) {|resource| ... } ⇒ BasicObject
Acquire the resource, waiting until it is available.
-
#initialize { ... } ⇒ Lease
constructor
Construct a lease from one resource-building block.
-
#owned? ⇒ Boolean
Whether the current Fiber owns the checkout.
-
#retire ⇒ self
Permanently retire this lease and wake its waiters.
-
#retired? ⇒ Boolean
Whether the lease has been permanently retired.
-
#try_checkout {|resource| ... } ⇒ BasicObject?
Acquire the resource immediately if it is available.
Methods included from Internal::Noncopyable
Constructor Details
#initialize { ... } ⇒ Lease
Construct a lease from one resource-building block.
16 17 18 19 20 21 |
# File 'lib/farce/abstract/lease.rb', line 16 def initialize raise ArgumentError, "a resource constructor block is required" unless block_given? @lease = new_internal_lease(yield) super end |
Instance Method Details
#available? ⇒ Boolean
Returns whether the resource is available for checkout.
67 |
# File 'lib/farce/abstract/lease.rb', line 67 def available? = internal_lease.available? |
#checked_out? ⇒ Boolean
Returns whether the resource is checked out.
70 |
# File 'lib/farce/abstract/lease.rb', line 70 def checked_out? = internal_lease.checked_out? |
#checkin(resource) ⇒ self
Return an explicitly checked-out resource or a replacement.
49 50 51 52 |
# File 'lib/farce/abstract/lease.rb', line 49 def checkin(resource) internal_lease.checkin(resource) self end |
#checkout(timeout: nil) {|resource| ... } ⇒ BasicObject
Acquire the resource, waiting until it is available.
29 30 31 32 |
# File 'lib/farce/abstract/lease.rb', line 29 def checkout(timeout: nil, &block) lease = internal_lease block ? lease.checkout(timeout:, &block) : lease.checkout(timeout:) end |
#owned? ⇒ Boolean
Returns whether the current Fiber owns the checkout.
73 |
# File 'lib/farce/abstract/lease.rb', line 73 def owned? = internal_lease.owned? |
#retire ⇒ self
Permanently retire this lease and wake its waiters.
The current Fiber must own the checkout. Retirement ends that checkout, so automatic block cleanup does not return the resource. The resource is not closed or otherwise disposed. Calling this again after retirement is safe.
61 62 63 64 |
# File 'lib/farce/abstract/lease.rb', line 61 def retire internal_lease.retire self end |
#retired? ⇒ Boolean
Returns whether the lease has been permanently retired.
76 |
# File 'lib/farce/abstract/lease.rb', line 76 def retired? = internal_lease.retired? |
#try_checkout {|resource| ... } ⇒ BasicObject?
Acquire the resource immediately if it is available.
38 39 40 41 |
# File 'lib/farce/abstract/lease.rb', line 38 def try_checkout(&block) lease = internal_lease block ? lease.try_checkout(&block) : lease.try_checkout end |