class SgtnClient::SingleOperation
Public Class Methods
new(*conditions, &block)
click to toggle source
# File lib/sgtn-client/common/single_operation.rb, line 6 def initialize(*conditions, &block) raise 'no way to create a new obj' unless block @lock = Mutex.new @hash = {} @conditions = conditions @creator = block end
Public Instance Methods
operate(id, *args)
click to toggle source
return new created object
# File lib/sgtn-client/common/single_operation.rb, line 17 def operate(id, *args) @lock.synchronize do obj = @hash[id] @conditions.each do |con| return obj unless con.call(id, obj, *args) end @hash[id] = @creator.call(id, obj, *args) end end
remove_object(id)
click to toggle source
# File lib/sgtn-client/common/single_operation.rb, line 27 def remove_object(id) @lock.synchronize do @hash.delete(id) end end