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.
13 14 15 16 |
# File 'lib/async/matrix/application_service/transaction_store.rb', line 13 def initialize(capacity: DEFAULT_CAPACITY) @seen = {} @capacity = capacity end |
Instance Method Details
#mark_seen(txn_id) ⇒ Object
22 23 24 25 |
# File 'lib/async/matrix/application_service/transaction_store.rb', line 22 def mark_seen(txn_id) prune! if @seen.size >= @capacity @seen[txn_id] = Process.clock_gettime(Process::CLOCK_MONOTONIC) end |
#seen?(txn_id) ⇒ Boolean
18 19 20 |
# File 'lib/async/matrix/application_service/transaction_store.rb', line 18 def seen?(txn_id) @seen.key?(txn_id) end |
#size ⇒ Object
27 28 29 |
# File 'lib/async/matrix/application_service/transaction_store.rb', line 27 def size @seen.size end |