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.



144
145
146
147
# File 'lib/dbus/bus.rb', line 144

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

Instance Attribute Details

#nameObject (readonly)

The name of the node.



141
142
143
# File 'lib/dbus/bus.rb', line 141

def name
  @name
end

#objectObject

The D-Bus object contained by the node.



139
140
141
# File 'lib/dbus/bus.rb', line 139

def object
  @object
end

Instance Method Details

#inspectObject

Return inspect information of the node.



172
173
174
175
# File 'lib/dbus/bus.rb', line 172

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

#sub_inspectObject

Return instance inspect information, used by Node#inspect.



178
179
180
181
182
183
184
# File 'lib/dbus/bus.rb', line 178

def sub_inspect
  s = ""
  if !@object.nil?
    s += format("%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. It is shallow, not recursing into subnodes



151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
# File 'lib/dbus/bus.rb', line 151

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>
'
  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