man-pages/man3/Net::DBus::Object.3pm.html
2021-03-31 01:06:50 +01:00

176 lines
4.6 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML><HEAD><TITLE>Man page of Net::DBus::Object</TITLE>
</HEAD><BODY>
<H1>Net::DBus::Object</H1>
Section: User Contributed Perl Documentation (3pm)<BR>Updated: 2019-12-26<BR><A HREF="#index">Index</A>
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
<A NAME="lbAB">&nbsp;</A>
<H2>NAME</H2>
Net::DBus::Object - Implement objects to export to the bus
<A NAME="lbAC">&nbsp;</A>
<H2>SYNOPSIS</H2>
<PRE>
# Connecting an object to the bus, under a service
package main;
use Net::DBus;
# Attach to the bus
my $bus = Net::DBus-&gt;find;
# Acquire a service 'org.demo.Hello'
my $service = $bus-&gt;export_service(&quot;org.demo.Hello&quot;);
# Export our object within the service
my $object = Demo::HelloWorld-&gt;new($service);
....rest of program...
# Define a new package for the object we're going
# to export
package Demo::HelloWorld;
# Specify the main interface provided by our object
use Net::DBus::Exporter qw(org.example.demo.Greeter);
# We're going to be a DBus object
use base qw(Net::DBus::Object);
# Export a 'Greeting' signal taking a stringl string parameter
dbus_signal(&quot;Greeting&quot;, [&quot;string&quot;]);
# Export 'Hello' as a method accepting a single string
# parameter, and returning a single string value
dbus_method(&quot;Hello&quot;, [&quot;string&quot;], [&quot;string&quot;]);
sub new {
my $class = shift;
my $service = shift;
my $self = $class-&gt;SUPER::new($service, &quot;/org/demo/HelloWorld&quot;);
bless $self, $class;
return $self;
}
sub Hello {
my $self = shift;
my $name = shift;
$self-&gt;emit_signal(&quot;Greeting&quot;, &quot;Hello $name&quot;);
return &quot;Said hello to $name&quot;;
}
# Export 'Goodbye' as a method accepting a single string
# parameter, and returning a single string, but put it
# in the 'org.exaple.demo.Farewell' interface
dbus_method(&quot;Goodbye&quot;, [&quot;string&quot;], [&quot;string&quot;], &quot;org.example.demo.Farewell&quot;);
sub Goodbye {
my $self = shift;
my $name = shift;
$self-&gt;emit_signal(&quot;Greeting&quot;, &quot;Goodbye $name&quot;);
return &quot;Said goodbye to $name&quot;;
}
</PRE>
<A NAME="lbAD">&nbsp;</A>
<H2>DESCRIPTION</H2>
This the base for implementing objects which are directly exported
to the bus. The methods implemented in a subclass are mapped to
methods on the bus. By using this class, an application is directly
tieing the <FONT SIZE="-1">RPC</FONT> functionality into its object model. Applications
may thus prefer to use the <TT>&quot;Net::DBus::ProxyObject&quot;</TT> class which
allows the <FONT SIZE="-1">RPC</FONT> functionality to be maintained separately from the
core object model, by proxying <FONT SIZE="-1">RPC</FONT> method calls.
<A NAME="lbAE">&nbsp;</A>
<H2>METHODS</H2>
<DL COMPACT>
<DT id="1">my $object = Net::DBus::Object-&gt;new($service, $path)<DD>
This creates a new DBus object with an path of <TT>$path</TT>
registered within the service <TT>$service</TT>. The <TT>$path</TT>
parameter should be a string complying with the usual
DBus requirements for object paths, while the <TT>$service</TT>
parameter should be an instance of Net::DBus::Service.
The latter is typically obtained by calling the <TT>&quot;export_service&quot;</TT>
method on the Net::DBus object.
<DT id="2">my $object = Net::DBus::Object-&gt;new($parentobj, $subpath)<DD>
This creates a new DBus child object with an path of <TT>$subpath</TT>
relative to its parent <TT>$parentobj</TT>. The <TT>$subpath</TT>
parameter should be a string complying with the usual
DBus requirements for object paths, while the <TT>$parentobj</TT>
parameter should be an instance of Net::DBus::BaseObject
or a subclass.
</DL>
<A NAME="lbAF">&nbsp;</A>
<H2>AUTHOR</H2>
Daniel P. Berrange
<A NAME="lbAG">&nbsp;</A>
<H2>COPYRIGHT</H2>
Copyright (C) 2005-2011 Daniel P. Berrange
<A NAME="lbAH">&nbsp;</A>
<H2>SEE ALSO</H2>
Net::DBus, Net::DBus::Service, Net::DBus::BaseObject,
Net::DBus::ProxyObject, Net::DBus::Exporter,
Net::DBus::RemoteObject
<P>
<HR>
<A NAME="index">&nbsp;</A><H2>Index</H2>
<DL>
<DT id="3"><A HREF="#lbAB">NAME</A><DD>
<DT id="4"><A HREF="#lbAC">SYNOPSIS</A><DD>
<DT id="5"><A HREF="#lbAD">DESCRIPTION</A><DD>
<DT id="6"><A HREF="#lbAE">METHODS</A><DD>
<DT id="7"><A HREF="#lbAF">AUTHOR</A><DD>
<DT id="8"><A HREF="#lbAG">COPYRIGHT</A><DD>
<DT id="9"><A HREF="#lbAH">SEE ALSO</A><DD>
</DL>
<HR>
This document was created by
<A HREF="/cgi-bin/man/man2html">man2html</A>,
using the manual pages.<BR>
Time: 00:05:49 GMT, March 31, 2021
</BODY>
</HTML>