mirror of
https://github.com/ditkrg/idempotent-request.git
synced 2026-01-22 22:06:44 +00:00
38 lines
606 B
Ruby
38 lines
606 B
Ruby
module IdempotentRequest
|
|
class MemoryStorage
|
|
def initialize
|
|
@memory = {}
|
|
end
|
|
|
|
def lock(key)
|
|
namespaced_key = lock_key(key)
|
|
return false if @memory.key?(namespaced_key)
|
|
@memory[namespaced_key] = true
|
|
end
|
|
|
|
def unlock(key)
|
|
namespaced_key = lock_key(key)
|
|
@memory.delete(namespaced_key)
|
|
@memory[namespaced_key]
|
|
end
|
|
|
|
def read(key)
|
|
@memory[key]
|
|
end
|
|
|
|
def write(key, payload)
|
|
@memory[key] = payload
|
|
end
|
|
|
|
def clear
|
|
@memory = {}
|
|
end
|
|
|
|
private
|
|
|
|
def lock_key(key)
|
|
"lock:#{key}"
|
|
end
|
|
end
|
|
end
|