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.



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

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

Instance Attribute Details

#nameObject (readonly)

The name of the node.



135
136
137
# File 'lib/dbus/bus.rb', line 135

def name
  @name
end

#objectObject

The D-Bus object contained by the node.



133
134
135
# File 'lib/dbus/bus.rb', line 133

def object
  @object
end

Instance Method Details

#inspectObject

Return inspect information of the node.



166
167
168
169
# File 'lib/dbus/bus.rb', line 166

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

#sub_inspectObject

Return instance inspect information, used by Node#inspect.



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

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. It is shallow, not recursing into subnodes



145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# File 'lib/dbus/bus.rb', line 145

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