Sha256: 1ad3468cffeed8b62154247cb62bcdfe43c7f18a96da8883775463a6e21bff9e

Contents?: true

Size: 1.7 KB

Versions: 13

Compression:

Stored size: 1.7 KB

Contents

class RbVmomi::VIM::ManagedObject
  # Wait for updates on an object until a condition becomes true.
  #
  # @param pathSet [Array] Property paths to wait for updates to.
  # @yield Called when an update to a subscribed property occurs.
  # @yieldreturn [Boolean] Whether to stop waiting.
  #
  # @todo Pass the current property values to the block.
  def wait_until *pathSet, &b
    all = pathSet.empty?
    filter = @soap.propertyCollector.CreateFilter :spec => {
      :propSet => [{ :type => self.class.wsdl_name, :all => all, :pathSet => pathSet }],
      :objectSet => [{ :obj => self }],
    }, :partialUpdates => false
    ver = ''
    loop do
      result = @soap.propertyCollector.WaitForUpdates(:version => ver)
      ver = result.version
      if x = b.call
        return x
      end
    end
  ensure
    filter.DestroyPropertyFilter if filter
  end

  # Efficiently retrieve multiple properties from an object.
  # @param pathSet [Array] Properties to return.
  # @return [Hash] Hash from property paths to values.
  def collect! *pathSet
    spec = {
      :objectSet => [{ :obj => self }],
      :propSet => [{
        :pathSet => pathSet,
        :type => self.class.wsdl_name
      }]
    }
    @soap.propertyCollector.RetrieveProperties(:specSet => [spec])[0].to_hash
  end

  # Efficiently retrieve multiple properties from an object.
  # @param pathSet (see #collect!)
  # @yield [*values] Property values in same order as +pathSet+.
  # @return [Array] Property values in same order as +pathSet+, or the return
  #                 value from the block if it is given.
  def collect *pathSet
    h = collect! *pathSet
    a = pathSet.map { |k| h[k.to_s] }
    if block_given?
      yield a
    else
      a
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
rbvmomi-1.4.0 lib/rbvmomi/vim/ManagedObject.rb
rbvmomi-1.3.0 lib/rbvmomi/vim/ManagedObject.rb
rbvmomi-1.2.3 lib/rbvmomi/vim/ManagedObject.rb
rbvmomi-1.2.2 lib/rbvmomi/vim/ManagedObject.rb
rbvmomi-1.2.1 lib/rbvmomi/vim/ManagedObject.rb
rbvmomi-1.2.0 lib/rbvmomi/vim/ManagedObject.rb
rbvmomi-1.1.8 lib/rbvmomi/vim/ManagedObject.rb
rbvmomi-1.1.6 lib/rbvmomi/vim/ManagedObject.rb
rbvmomi-1.1.5 lib/rbvmomi/vim/ManagedObject.rb
rbvmomi-1.1.4 lib/rbvmomi/vim/ManagedObject.rb
rbvmomi-1.1.3 lib/rbvmomi/vim/ManagedObject.rb
rbvmomi-1.1.2 lib/rbvmomi/vim/ManagedObject.rb
rbvmomi-1.1.1 lib/rbvmomi/vim/ManagedObject.rb