Sha256: 57c9c54896fdd9720020f99efed222ecbbe454301ba2f4440ce89e102ccaeb32

Contents?: true

Size: 762 Bytes

Versions: 1

Compression:

Stored size: 762 Bytes

Contents

module Mongo
  class Lock
    module Drivers
      class Base

        attr_accessor :lock

        def initialize lock
          self.lock = lock
        end

        def key
          lock.key
        end

        def query
          {
            key: key,
            expires_at: { '$gt' => Time.now }
          }
        end

        def find_or_insert options
          options[:expire_at] = Time.now + options[:expire_in]
          options[:insert] = true
          find_and_modify options
        end

        def find_and_update time, options
          options[:expire_at] = lock.expires_at + time
          find_and_modify options
        end

        def is_acquired?
          find_already_acquired.count > 0
        end

      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongo-lock-1.2.0 lib/mongo-lock/drivers/base.rb