Class DBus::Method
In: lib/dbus/introspect.rb
Parent: InterfaceElement

D-Bus interface method class

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

Methods

Attributes

rets  [R]  The list of return values for the method. Array: FormalParameter

Public Class methods

Creates a new method interface element with the given name.

[Source]

# File lib/dbus/introspect.rb, line 144
    def initialize(name)
      super(name)
      @rets = Array.new
    end

Public Instance methods

Add a return value name and signature.

[Source]

# File lib/dbus/introspect.rb, line 150
    def add_return(name, signature)
      @rets << FormalParameter.new(name, signature)
    end

Add parameter types by parsing the given prototype.

[Source]

# File lib/dbus/introspect.rb, line 155
    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

Return an XML string representation of the method interface elment.

[Source]

# File lib/dbus/introspect.rb, line 177
    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

[Validate]