In Files

Parent

Files

DBus::Service

This represents a remote service. It should not be instantiated directly Use Bus::service()

Attributes

bus[R]

The bus the service is running on.

name[R]

The service name.

root[R]

The service root (FIXME).

Public Class Methods

new(name, bus) click to toggle source

Create a new service with a given name on a given bus.

# File lib/dbus/bus.rb, line 31
def initialize(name, bus)
  @name, @bus = name, bus
  @root = Node.new("/")
end

Public Instance Methods

exists?() click to toggle source

Determine whether the service name already exists.

# File lib/dbus/bus.rb, line 37
def exists?
  bus.proxy.ListNames[0].member?(@name)
end
export(obj) click to toggle source

Export an object obj (an DBus::Object subclass instance).

# File lib/dbus/bus.rb, line 62
def export(obj)
  obj.service = self
  get_node(obj.path, true).object = obj
end
get_node(path, create = false) click to toggle source

Get the object node corresponding to the given path. if create is true, the the nodes in the path are created if they do not already exist.

# File lib/dbus/bus.rb, line 85
def get_node(path, create = false)
  n = @root
  path.sub(/^\//, "").split("/").each do |elem|
    if not n[elem]
      if not create
        return nil
      else
        n[elem] = Node.new(elem)
      end
    end
    n = n[elem]
  end
  if n.nil?
    puts "Warning, unknown object #{path}" if $DEBUG
  end
  n
end
introspect() click to toggle source

Perform an introspection on all the objects on the service (starting recursively from the root).

# File lib/dbus/bus.rb, line 43
def introspect
  if block_given?
    raise NotImplementedError
  else
    rec_introspect(@root, "/")
  end
  self
end
object(path) click to toggle source

Retrieves an object (ProxyObject) at the given path.

# File lib/dbus/bus.rb, line 53
def object(path)
  node = get_node(path, true)
  if node.object.nil?
    node.object = ProxyObject.new(@bus, @name, path)
  end
  node.object
end
unexport(obj) click to toggle source

Undo exporting an object obj. Raises ArgumentError if it is not a DBus::Object. Returns the object, or false if obj was not exported.

# File lib/dbus/bus.rb, line 70
def unexport(obj)
  raise ArgumentError.new("DBus::Service#unexport() expects a DBus::Object argument") unless obj.kind_of?(DBus::Object)
  return false unless obj.path
  pathSep = obj.path.rindex("/") #last path seperator
  parent_path = obj.path[1..pathSep-1]
  node_name = obj.path[pathSep+1..-1]

  parent_node = get_node(parent_path, false)
  return false unless parent_node
  obj.service = nil
  parent_node.delete(node_name)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.