Module: Engram::Ports::ProcessedTurns
- Included in:
- Adapters::InMemoryProcessedTurns, Rails::CacheProcessedTurns
- Defined in:
- lib/engram/ports/processed_turns.rb
Overview
Scoped lifecycle for observation idempotency. Implementations suppress concurrent claims while a lease is live. Lease expiry may permit overlap; this contract does not provide token ownership, fencing, or exactly-once execution. #claim returns a truthy opaque token when the caller may proceed, or nil when suppressed. Implementations: Adapters::InMemoryProcessedTurns, Rails::CacheProcessedTurns.
Instance Method Summary collapse
- #claim(scope:, key:) ⇒ Object
- #complete(scope:, key:, claim:) ⇒ Object
- #completed?(scope:, key:) ⇒ Boolean
- #release(scope:, key:, claim:) ⇒ Object
Instance Method Details
#claim(scope:, key:) ⇒ Object
11 12 13 |
# File 'lib/engram/ports/processed_turns.rb', line 11 def claim(scope:, key:) raise NotImplementedError, "#{self.class} must implement #claim" end |
#complete(scope:, key:, claim:) ⇒ Object
15 16 17 |
# File 'lib/engram/ports/processed_turns.rb', line 15 def complete(scope:, key:, claim:) raise NotImplementedError, "#{self.class} must implement #complete" end |
#completed?(scope:, key:) ⇒ Boolean
23 24 25 |
# File 'lib/engram/ports/processed_turns.rb', line 23 def completed?(scope:, key:) raise NotImplementedError, "#{self.class} must implement #completed?" end |
#release(scope:, key:, claim:) ⇒ Object
19 20 21 |
# File 'lib/engram/ports/processed_turns.rb', line 19 def release(scope:, key:, claim:) raise NotImplementedError, "#{self.class} must implement #release" end |