Class: SolidObjects::SyncDeadline
- Inherits:
-
Object
- Object
- SolidObjects::SyncDeadline
- Defined in:
- lib/solid_objects/sync_deadline.rb,
sig/generated/lib/solid_objects/sync_deadline.rbs
Constant Summary collapse
- KEY =
:solid_objects_sync_deadline
Class Method Summary collapse
- .active? ⇒ Boolean
- .expired? ⇒ Boolean
- .remaining ⇒ Float
- .remaining_milliseconds ⇒ Integer
- .remaining_seconds ⇒ Integer
- .with(timeout:) { ... } ⇒ Object
Class Method Details
.active? ⇒ Boolean
18 19 20 |
# File 'lib/solid_objects/sync_deadline.rb', line 18 def active? !deadline.nil? end |
.expired? ⇒ Boolean
23 24 25 |
# File 'lib/solid_objects/sync_deadline.rb', line 23 def expired? active? && !remaining.positive? end |
.remaining ⇒ Float
28 29 30 31 32 |
# File 'lib/solid_objects/sync_deadline.rb', line 28 def remaining return Float::INFINITY unless deadline deadline - monotonic_now end |
.remaining_milliseconds ⇒ Integer
35 36 37 |
# File 'lib/solid_objects/sync_deadline.rb', line 35 def remaining_milliseconds [ (remaining * 1_000).floor, 1 ].max end |
.remaining_seconds ⇒ Integer
40 41 42 |
# File 'lib/solid_objects/sync_deadline.rb', line 40 def remaining_seconds [ remaining.ceil, 1 ].max end |
.with(timeout:) { ... } ⇒ Object
9 10 11 12 13 14 15 |
# File 'lib/solid_objects/sync_deadline.rb', line 9 def with(timeout:) previous_deadline = ActiveSupport::IsolatedExecutionState[KEY] ActiveSupport::IsolatedExecutionState[KEY] = monotonic_now + timeout.to_f yield ensure ActiveSupport::IsolatedExecutionState[KEY] = previous_deadline end |