Sha256: d8f6fa9e8073a9cbc6688e39d97105c5510c5ad3a738761652c8595bf1d84bda

Contents?: true

Size: 490 Bytes

Versions: 4

Compression:

Stored size: 490 Bytes

Contents

require 'thread'

module WorkflowRb
  class SingleNodeLockProvider

    def initialize
      @semaphore = Mutex.new
      @named_locks = []
    end

    def acquire_lock(id)
      @semaphore.synchronize do
        if @named_locks.include?(id)
          return false
        end
        @named_locks << id
        return true
      end
    end

    def release_lock(id)
      @semaphore.synchronize do
        @named_locks.delete(id)
      end
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
workflow_rb-0.1.3 lib/workflow_rb/services/single_node_lock_provider.rb
workflow_rb-0.1.2 lib/workflow_rb/services/single_node_lock_provider.rb
workflow_rb-0.1.1 lib/workflow_rb/services/single_node_lock_provider.rb
workflow_rb-0.1.0 lib/workflow_rb/services/single_node_lock_provider.rb