Class: Async::Matrix::ApplicationService::TransactionStore
- Inherits:
-
Object
- Object
- Async::Matrix::ApplicationService::TransactionStore
- Defined in:
- lib/async/matrix/application_service/transaction_store.rb
Overview
In-memory idempotency store for appservice transaction IDs.
Constant Summary collapse
- DEFAULT_CAPACITY =
1024
Instance Method Summary collapse
-
#initialize(capacity: DEFAULT_CAPACITY) ⇒ TransactionStore
constructor
A new instance of TransactionStore.
- #mark_seen(txn_id) ⇒ Object
- #seen?(txn_id) ⇒ Boolean
- #size ⇒ Object
Constructor Details
#initialize(capacity: DEFAULT_CAPACITY) ⇒ TransactionStore
Returns a new instance of TransactionStore.
16 17 18 19 |
# File 'lib/async/matrix/application_service/transaction_store.rb', line 16 def initialize(capacity: DEFAULT_CAPACITY) @seen = {} @capacity = capacity end |
Instance Method Details
#mark_seen(txn_id) ⇒ Object
25 26 27 28 |
# File 'lib/async/matrix/application_service/transaction_store.rb', line 25 def mark_seen(txn_id) prune! if @seen.size >= @capacity @seen[txn_id] = Process.clock_gettime(Process::CLOCK_MONOTONIC) end |
#seen?(txn_id) ⇒ Boolean
21 22 23 |
# File 'lib/async/matrix/application_service/transaction_store.rb', line 21 def seen?(txn_id) @seen.key?(txn_id) end |
#size ⇒ Object
30 31 32 |
# File 'lib/async/matrix/application_service/transaction_store.rb', line 30 def size @seen.size end |