Object
# File lib/rbvmomi/type_loader.rb, line 8 def initialize fn, extension_dirs, namespace @extension_dirs = extension_dirs @namespace = namespace @lock = Monitor.new @db = {} @id2wsdl = {} @loaded = {} add_types Hash[BasicTypes::BUILTIN.map { |k| [k,nil] }] vmodl_database = File.open(fn, 'r') { |io| Marshal.load io } vmodl_database.reject! { |k,v| k =~ /^_/ } add_types vmodl_database preload end
# File lib/rbvmomi/type_loader.rb, line 65 def add_types types @lock.synchronize do @db.merge! types end end
# File lib/rbvmomi/type_loader.rb, line 53 def get name fail unless name.is_a? String return @loaded[name] if @loaded.member? name @lock.synchronize do return @loaded[name] if @loaded.member? name klass = make_type(name) @namespace.const_set name, klass load_extension name @loaded[name] = klass end end
# File lib/rbvmomi/type_loader.rb, line 48 def has? name fail unless name.is_a? String @db.member?(name) or BasicTypes::BUILTIN.member?(name) end
# File lib/rbvmomi/type_loader.rb, line 22 def preload names = (@namespace.constants + Object.constants).map(&:to_s).uniq. select { |x| has? x } names.each { |x| get(x) } end
Reload all extensions for loaded VMODL types
# File lib/rbvmomi/type_loader.rb, line 29 def reload_extensions @extension_dirs.each do |path| reload_extensions_dir path end end
Reload all extensions for loaded VMODL types from the given directory
# File lib/rbvmomi/type_loader.rb, line 36 def reload_extensions_dir path loaded = Set.new(typenames.select { |x| @namespace.const_defined? x }) Dir.open(path) do |dir| dir.each do |file| next unless file =~ /\.rb$/ next unless loaded.member? $` file_path = File.join(dir, file) load file_path end end end
Generated with the Darkfish Rdoc Generator 2.