class DBus::Method

D-Bus interface method class

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

Attributes

rets[R]

@return [Array<FormalParameter>] The list of return values for the method

Public Class Methods

new(name) click to toggle source

Creates a new method interface element with the given name.

Calls superclass method DBus::InterfaceElement.new
# File lib/dbus/introspect.rb, line 184
def initialize(name)
  super(name)
  @rets = []
end

Public Instance Methods

add_return(name, signature) click to toggle source

Add a return value name and signature. @param name [#to_s] @param signature [SingleCompleteType]

# File lib/dbus/introspect.rb, line 192
def add_return(name, signature)
  @rets << FormalParameter.new(name, signature)
end
from_prototype(prototype) click to toggle source

Add parameter types by parsing the given prototype. @param prototype [Prototype]

# File lib/dbus/introspect.rb, line 198
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_fparam(name, sig)
    when "out"
      add_return(name, sig)
    end
  end
  self
end
to_xml() click to toggle source

Return an XML string representation of the method interface elment. @return [String]

# File lib/dbus/introspect.rb, line 222
def to_xml
  xml = "    <method name=\"#{@name}\">\n"
  @params.each do |param|
    name = param.name ? "name=\"#{param.name}\" " : ""
    xml += "      <arg #{name}direction=\"in\" type=\"#{param.type}\"/>\n"
  end
  @rets.each do |param|
    name = param.name ? "name=\"#{param.name}\" " : ""
    xml += "      <arg #{name}direction=\"out\" type=\"#{param.type}\"/>\n"
  end
  xml += "    </method>\n"
  xml
end