Sha256: 4a8cf868119a5197a63c5e026e093d72bd9cce5c5a4ffd7231630dc0d48a4bb3

Contents?: true

Size: 922 Bytes

Versions: 2

Compression:

Stored size: 922 Bytes

Contents

class Etcdv3::Namespace
  class Lock
    include GRPC::Core::TimeConsts
    include Etcdv3::Namespace::Utilities

    def initialize(hostname, credentials, timeout, namespace, metadata = {})
      @stub = V3lockpb::Lock::Stub.new(hostname, credentials)
      @timeout = timeout
      @namespace = namespace
      @metadata = metadata
    end

    def lock(name, lease_id, timeout: nil)
      name = prepend_prefix(@namespace, name)
      request = V3lockpb::LockRequest.new(name: name, lease: lease_id)
      resp = @stub.lock(request, deadline: deadline(timeout))
      strip_prefix_from_lock(@namespace, resp)
    end

    def unlock(key, timeout: nil)
      key = prepend_prefix(@namespace, key)
      request = V3lockpb::UnlockRequest.new(key: key)
      @stub.unlock(request, deadline: deadline(timeout))
    end

    private

    def deadline(timeout)
      from_relative_time(timeout || @timeout)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
etcdv3-0.11.4 lib/etcdv3/namespace/lock.rb
etcdv3-0.11.3 lib/etcdv3/namespace/lock.rb