Net::DBus::Binding::Introspector - Handler for object
introspection data
# Create an object populating with info from an
# XML doc containing introspection data.
my $ins = Net::DBus::Binding::Introspector->new(xml => $data);
# Create an object, defining introspection data
# programmatically
my $ins = Net::DBus::Binding::Introspector->new(object_path => $object->get_object_path);
$ins->add_method("DoSomething", ["string"], [], "org.example.MyObject");
$ins->add_method("TestSomething", ["int32"], [], "org.example.MyObject");
This class is responsible for managing introspection data, and
answering questions about it. This is not intended for use by application
developers, whom should instead consult the higher level API in
Net::DBus::Exporter.
- my $ins =
Net::DBus::Binding::Introspector->new(object_path => $object_path, xml
=> $xml);
- Creates a new introspection data manager for the object registered at the
path specified for the "object_path"
parameter. The optional "xml" parameter
can be used to pre-load the manager with introspection metadata from an
XML document.
- $ins->add_interface($name)
- Register the object as providing an interface with the name
$name
- my $bool =
$ins->has_interface($name)
- Return a true value if the object is registered as providing an interface
with the name $name; returns false otherwise.
- my @interfaces =
$ins->has_method($name, [$interface])
- Return a list of all interfaces provided by the object, which contain a
method called $name. This may be an empty list.
The optional $interface parameter can restrict the
check to just that one interface.
- my $boolean =
$ins->is_method_allowed($name[, $interface])
- Checks according to whether the remote caller is allowed to invoke the
method $name on the object associated with this
introspector. If this object has 'strict exports' enabled, then only
explicitly exported methods will be allowed. The optional
$interface parameter can restrict the check to
just that one interface. Returns a non-zero value if the method should be
allowed.
- my @interfaces =
$ins->has_signal($name)
- Return a list of all interfaces provided by the object, which contain a
signal called $name. This may be an empty
list.
- my @interfaces =
$ins->has_property($name)
- Return a list of all interfaces provided by the object, which contain a
property called $name. This may be an empty list.
The optional $interface parameter can restrict the
check to just that one interface.
- $ins->add_method($name, $params, $returns, $interface, $attributes,
$paramnames, $returnnames);
- Register the object as providing a method called
$name accepting parameters whose types are
declared by $params and returning values whose
type are declared by $returns. The method will be
scoped to the interface named by $interface. The
$attributes parameter is a hash reference for
annotating the method. The $paramnames and
$returnames parameters are a list of argument and
return value names.
- $ins->add_signal($name, $params, $interface, $attributes);
- Register the object as providing a signal called
$name with parameters whose types are declared by
$params. The signal will be scoped to the
interface named by $interface. The
$attributes parameter is a hash reference for
annotating the signal.
- $ins->add_property($name, $type, $access, $interface,
$attributes);
- Register the object as providing a property called
$name with a type of
$type. The $access
parameter can be one of "read",
"write", or
"readwrite". The property will be scoped
to the interface named by $interface. The
$attributes parameter is a hash reference for
annotating the signal.
- my $boolean =
$ins->is_method_deprecated($name, $interface)
- Returns a true value if the method called $name in
the interface $interface is marked as
deprecated
- my $boolean =
$ins->is_signal_deprecated($name, $interface)
- Returns a true value if the signal called $name in
the interface $interface is marked as
deprecated
- my $boolean =
$ins->is_property_deprecated($name, $interface)
- Returns a true value if the property called $name
in the interface $interface is marked as
deprecated
- my $boolean =
$ins->does_method_reply($name, $interface)
- Returns a true value if the method called $name in
the interface $interface will generate a reply.
Returns a false value otherwise.
- my $boolean =
$ins->method_has_strict_exceptions($name, $interface)
- Returns true if the method called $name in the
interface $interface has the strict_exceptions
attribute; that is any exceptions which aren't Net::DBus::Error objects
should not be caught and allowed to travel up the stack.
- my @names =
$ins->list_interfaces
- Returns a list of all interfaces registered as being provided by the
object.
- my @names =
$ins->list_methods($interface)
- Returns a list of all methods registered as being provided by the object,
within the interface $interface.
- my @names =
$ins->list_signals($interface)
- Returns a list of all signals registered as being provided by the object,
within the interface $interface.
- my @names =
$ins->list_properties($interface)
- Returns a list of all properties registered as being provided by the
object, within the interface $interface.
- my @paths =
$self->list_children;
- Returns a list of object paths representing all the children of this
node.
- my $path =
$ins->get_object_path
- Returns the path of the object associated with this introspection
data
- my @types =
$ins->get_method_params($interface, $name)
- Returns a list of declared data types for parameters of the method called
$name within the interface
$interface.
- my @types =
$ins->get_method_param_names($interface, $name)
- Returns a list of declared names for parameters of the method called
$name within the interface
$interface.
- my @types =
$ins->get_method_returns($interface, $name)
- Returns a list of declared data types for return values of the method
called $name within the interface
$interface.
- my @types =
$ins->get_method_return_names($interface, $name)
- Returns a list of declared names for return values of the method called
$name within the interface
$interface.
- my @types =
$ins->get_signal_params($interface, $name)
- Returns a list of declared data types for values associated with the
signal called $name within the interface
$interface.
- my @types =
$ins->get_signal_param_names($interface, $name)
- Returns a list of declared names for values associated with the signal
called $name within the interface
$interface.
- my $type =
$ins->get_property_type($interface, $name)
- Returns the declared data type for property called
$name within the interface
$interface.
- my $bool =
$ins->is_property_readable($interface, $name);
- Returns a true value if the property called $name
within the interface $interface can have its value
read.
- my $bool =
$ins->is_property_writable($interface, $name);
- Returns a true value if the property called $name
within the interface $interface can have its value
written to.
- my $xml =
$ins->format([$obj])
- Return a string containing an XML document representing the state of the
introspection data. The optional $obj parameter
can be an instance of Net::DBus::Object to include object specific
information in the XML (eg child nodes).
- my $xml_fragment =
$ins->to_xml
- Returns a string containing an XML fragment representing the state of the
introspection data. This is basically the same as the
"format" method, but without the leading
doctype declaration.
- $type = $ins->to_xml_type($type)
- Takes a text-based representation of a data type and returns the compact
representation used in XML introspection data.
- $ins->encode($message, $type, $name, $direction, @args)
- Append a set of values <@args> to a message object
$message. The $type
parameter is either "signal" or
"method" and
$direction is either
"params" or
"returns". The introspection data will
be queried to obtain the declared data types & the argument
marshalling accordingly.
- my @args =
$ins->decode($message, $type, $name, $direction)
- Unmarshalls the contents of a message object
$message. The $type
parameter is either "signal" or
"method" and
$direction is either
"params" or
"returns". The introspection data will
be queried to obtain the declared data types & the arguments
unmarshalled accordingly.
Copyright (C) 2004-2011 Daniel P. Berrange
Net::DBus::Exporter, Net::DBus::Binding::Message