Class: VirtualBox::USBDeviceFilter

Inherits:
AbstractModel show all
Defined in:
lib/virtualbox/usb_device_filter.rb

Overview

Represents a USB device filter within VirtualBox. This class is a relationship to USBController objects.

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from AbstractModel

#destroy, #errors, errors_for_relationship, #existing_record!, #inspect, #lazy_attribute?, #lazy_relationship?, #new_record!, #new_record?, #parent_machine, #populate_attributes, #populate_relationship, #populate_relationships, reload!, #reload!, reload?, reloaded!, #save!, #save_attribute, #save_changed_interface_attributes, #save_interface_attribute, #set_relationship, #validate, #write_attribute

Methods included from AbstractModel::Validatable

#__validates_extract_options, #add_error, #clear_errors, #errors, #errors_on, #full_error_messages, #valid?, #validate, #validates_format_of, #validates_inclusion_of, #validates_numericality_of, #validates_presence_of

Methods included from AbstractModel::Relatable

#destroy_relationship, #destroy_relationships, #has_relationship?, included, #lazy_relationship?, #loaded_relationship?, #populate_relationship, #populate_relationships, #read_relationship, #relationship_class, #relationship_data, #save_relationship, #save_relationships, #set_relationship

Methods included from AbstractModel::VersionMatcher

#assert_version_match, #split_version, #version_match?

Methods included from AbstractModel::Dirty

#changed?, #changes, #clear_dirty!, #ignore_dirty, #method_missing, #set_dirty!

Methods included from AbstractModel::InterfaceAttributes

#load_interface_attribute, #load_interface_attributes, #save_interface_attribute, #save_interface_attributes, #spec_to_proc

Methods included from AbstractModel::Attributable

#attributes, #has_attribute?, included, #lazy_attribute?, #loaded_attribute?, #populate_attributes, #read_attribute, #readonly_attribute?, #write_attribute

Methods included from Logger

included, #logger, #logger_output=

Constructor Details

#initialize(iusb) ⇒ USBDeviceFilter

Returns a new instance of USBDeviceFilter.



46
47
48
# File 'lib/virtualbox/usb_device_filter.rb', line 46

def initialize(iusb)
  initialize_attributes(iusb)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class VirtualBox::AbstractModel::Dirty

Class Method Details

.populate_relationship(caller, usbcontroller) ⇒ USBDeviceFilter

Populates the USB controller relationship for anything which is related to it.

**This method typically won’t be used except internally.**

Returns:



27
28
29
30
31
32
33
34
35
# File 'lib/virtualbox/usb_device_filter.rb', line 27

def populate_relationship(caller, usbcontroller)
  result = Proxies::Collection.new(caller)

  usbcontroller.device_filters.each do |filter|
    result << new(filter)
  end

  result
end

.save_relationship(caller, item) ⇒ Object

Saves the relationship. This simply calls #save on the relationship object.

**This method typically won’t be used except internally.**



41
42
43
# File 'lib/virtualbox/usb_device_filter.rb', line 41

def save_relationship(caller, item)
  item.save
end

Instance Method Details

#added_to_relationship(proxy) ⇒ Object



62
63
64
65
# File 'lib/virtualbox/usb_device_filter.rb', line 62

def added_to_relationship(proxy)
  write_attribute(:parent, proxy.parent)
  write_attribute(:parent_collection, proxy)
end

#initialize_attributes(iusb) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/virtualbox/usb_device_filter.rb', line 50

def initialize_attributes(iusb)
  # Write the parent and interface attributes
  write_attribute(:interface, iusb)

  # Load the interface attributes
  load_interface_attributes(interface)

  # Clear dirty and mark as existing
  clear_dirty!
  existing_record!
end

#saveObject

Saves the USB device.



68
69
70
71
72
# File 'lib/virtualbox/usb_device_filter.rb', line 68

def save
  parent.with_open_session do |session|
    # TODO: save_changed_interface_attributes(session.machine.usb_controller)
  end
end