Class: Async::Matrix::ApplicationService::TransactionStore

Inherits:
Object
  • Object
show all
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

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

Returns:

  • (Boolean)


21
22
23
# File 'lib/async/matrix/application_service/transaction_store.rb', line 21

def seen?(txn_id)
	@seen.key?(txn_id)
end

#sizeObject



30
31
32
# File 'lib/async/matrix/application_service/transaction_store.rb', line 30

def size
	@seen.size
end