Class: DBus::Method

Inherits:
InterfaceElement show all
Defined in:
lib/dbus/introspect.rb

Overview

D-Bus interface method class

This is a class representing methods that are part of an interface.

Instance Attribute Summary collapse

Attributes inherited from InterfaceElement

#name, #params

Instance Method Summary collapse

Methods inherited from InterfaceElement

#add_param, #validate_name

Constructor Details

#initialize(name) ⇒ Method

Creates a new method interface element with the given name.



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

def initialize(name)
  super(name)
  @rets = Array.new
end

Instance Attribute Details

#retsObject (readonly)

The list of return values for the method.



113
114
115
# File 'lib/dbus/introspect.rb', line 113

def rets
  @rets
end

Instance Method Details

#add_return(ret) ⇒ Object

Add a return value ret.



122
123
124
# File 'lib/dbus/introspect.rb', line 122

def add_return(ret)
  @rets << ret
end

#from_prototype(prototype) ⇒ Object

Add parameter types by parsing the given prototype.



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

def from_prototype(prototype)
  prototype.split(/, */).each do |arg|
    arg = arg.split(" ")
    raise InvalidClassDefinition if arg.size != 2
    dir, arg = arg
    if arg =~ /:/
      arg = arg.split(":")
      name, sig = arg
    else
      sig = arg
    end
    case dir
    when "in"
      add_param([name, sig])
    when "out"
      add_return([name, sig])
    end
  end
  self
end

#to_xmlObject

Return an XML string representation of the method interface elment.



149
150
151
152
153
154
155
156
157
158
159
160
161
# File 'lib/dbus/introspect.rb', line 149

def to_xml
  xml = %{<method name="#{@name}">\n}
  @params.each do |param|
    name = param[0] ? %{name="#{param[0]}" } : ""
    xml += %{<arg #{name}direction="in" type="#{param[1]}"/>\n}
  end
  @rets.each do |param|
    name = param[0] ? %{name="#{param[0]}" } : ""
    xml += %{<arg #{name}direction="out" type="#{param[1]}"/>\n}
  end
  xml += %{</method>\n}
  xml
end