Class: DBus::Node

Inherits:
Hash
  • Object
show all
Defined in:
lib/dbus/bus.rb

Overview

Object path node class

Class representing a node on an object path.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Node

Create a new node with a given name.



120
121
122
123
# File 'lib/dbus/bus.rb', line 120

def initialize(name)
  @name = name
  @object = nil
end

Instance Attribute Details

#nameObject (readonly)

The name of the node.



117
118
119
# File 'lib/dbus/bus.rb', line 117

def name
  @name
end

#objectObject

The D-Bus object contained by the node.



115
116
117
# File 'lib/dbus/bus.rb', line 115

def object
  @object
end

Instance Method Details

#inspectObject

Return inspect information of the node.



147
148
149
150
# File 'lib/dbus/bus.rb', line 147

def inspect
  # Need something here
  "<DBus::Node #{sub_inspect}>"
end

#sub_inspectObject

Return instance inspect information, used by Node#inspect.



153
154
155
156
157
158
159
# File 'lib/dbus/bus.rb', line 153

def sub_inspect
  s = ""
  if not @object.nil?
    s += "%x " % @object.object_id
  end
  s + "{" + keys.collect { |k| "#{k} => #{self[k].sub_inspect}" }.join(",") + "}"
end

#to_xmlObject

Return an XML string representation of the node.



126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/dbus/bus.rb', line 126

def to_xml
  xml = '<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
'
  self.each_pair do |k, v|
    xml += "<node name=\"#{k}\" />"
  end
  if @object
    @object.intfs.each_pair do |k, v|
      xml += %{<interface name="#{v.name}">\n}
      v.methods.each_value { |m| xml += m.to_xml }
      v.signals.each_value { |m| xml += m.to_xml }
      xml +="</interface>\n"
    end
  end
  xml += '</node>'
  xml
end