1Net::DBus::BaseObject(3U)ser Contributed Perl DocumentatiNoent::DBus::BaseObject(3)
2
3
4
6 Net::DBus::BaseObject - base class for exporting objects to the bus
7
9 # We're going to be a DBus object
10 use base qw(Net::DBus::BaseObject);
11
12 # Export a 'Greeting' signal taking a stringl string parameter
13 dbus_signal("Greeting", ["string"]);
14
15 # Export 'Hello' as a method accepting a single string
16 # parameter, and returning a single string value
17 dbus_method("Hello", ["string"], ["string"]);
18
19 sub new {
20 my $class = shift;
21 my $service = shift;
22 my $self = $class->SUPER::new($service, "/org/demo/HelloWorld");
23
24 bless $self, $class;
25
26 return $self;
27 }
28
29 sub _dispatch_object {
30 my $self = shift;
31 my $connection = shift;
32 my $message = shift;
33
34 if (....$message refers to a object's method ... ) {
35 ...dispatch this object's interfaces/methods...
36 return $reply;
37 }
38 }
39
41 This the base of all objects which are exported to the message bus. It
42 provides the core support for type introspection required for objects
43 exported to the message. When sub-classing this object, the "_dispatch"
44 object should be implemented to handle processing of incoming messages.
45 The Net::DBus::Exporter module is used to declare which methods (and
46 signals) are being exported to the message bus.
47
48 All packages inheriting from this, will automatically have the
49 interface "org.freedesktop.DBus.Introspectable" registered with
50 Net::DBus::Exporter, and the "Introspect" method within this exported.
51
52 Application developers will rarely want to use this class directly,
53 instead either Net::DBus::Object or "Net::DBus::ProxyObject" are the
54 common choices. This class will only be used if wanting to write a new
55 approach to dispatching incoming method calls.
56
58 my $object = Net::DBus::BaseObject->new($service, $path)
59 This creates a new DBus object with an path of $path registered
60 within the service $service. The $path parameter should be a string
61 complying with the usual DBus requirements for object paths, while
62 the $service parameter should be an instance of Net::DBus::Service.
63 The latter is typically obtained by calling the "export_service"
64 method on the Net::DBus object.
65
66 my $object = Net::DBus::BaseObject->new($parentobj, $subpath)
67 This creates a new DBus child object with an path of $subpath
68 relative to its parent $parentobj. The $subpath parameter should be
69 a string complying with the usual DBus requirements for object
70 paths, while the $parentobj parameter should be an instance of
71 Net::DBus::BaseObject.
72
73 $object->disconnect();
74 This method disconnects the object from the bus, such that it will
75 no longer receive messages sent by other clients. Any child objects
76 will be recursively disconnected too. After an object has been
77 disconnected, it is possible for Perl to garbage collect the object
78 instance. It will also make it possible to connect a newly created
79 object to the same path.
80
81 my $bool = $object->is_connected
82 Returns a true value if the object is connected to the bus, and
83 thus capable of being accessed by remote clients. Returns false if
84 the object is disconnected & thus ready for garbage collection. All
85 objects start off in the connected state, and will only transition
86 if the "disconnect" method is called.
87
88 my $service = $object->get_service
89 Retrieves the Net::DBus::Service object within which this object is
90 exported.
91
92 my $path = $object->get_object_path
93 Retrieves the path under which this object is exported
94
95 $object->emit_signal_in($name, $interface, $client, @args);
96 Emits a signal from the object, with a name of $name. If the
97 $interface parameter is defined, the signal will be scoped within
98 that interface. If the $client parameter is defined, the signal
99 will be unicast to that client on the bus. The signal and the data
100 types of the arguments @args must have been registered with
101 Net::DBus::Exporter by calling the "dbus_signal" method.
102
103 $self->emit_signal_to($name, $client, @args);
104 Emits a signal from the object, with a name of $name. The signal
105 and the data types of the arguments @args must have been registered
106 with Net::DBus::Exporter by calling the "dbus_signal" method. The
107 signal will be sent only to the client named by the $client
108 parameter.
109
110 $self->emit_signal($name, @args);
111 Emits a signal from the object, with a name of $name. The signal
112 and the data types of the arguments @args must have been registered
113 with Net::DBus::Exporter by calling the "dbus_signal" method. The
114 signal will be broadcast to all clients on the bus.
115
116 $object->connect_to_signal_in($name, $interface, $coderef);
117 Connects a callback to a signal emitted by the object. The $name
118 parameter is the name of the signal within the object, and $coderef
119 is a reference to an anonymous subroutine. When the signal $name is
120 emitted by the remote object, the subroutine $coderef will be
121 invoked, and passed the parameters from the signal. The $interface
122 parameter is used to specify the explicit interface defining the
123 signal to connect to.
124
125 $object->connect_to_signal($name, $coderef);
126 Connects a callback to a signal emitted by the object. The $name
127 parameter is the name of the signal within the object, and $coderef
128 is a reference to an anonymous subroutine. When the signal $name is
129 emitted by the remote object, the subroutine $coderef will be
130 invoked, and passed the parameters from the signal.
131
132 $reply = $object->_dispatch_object($connection, $message);
133 The "_dispatch_object" method is to be used to handle dispatch of
134 methods implemented by the object. The default implementation is a
135 no-op and should be overridden by subclasses todo whatever
136 processing is required. If the $message could be handled then
137 another "Net::DBus::Binding::Message" instance should be returned
138 for the reply. If "undef" is returned, then a generic error will be
139 returned to the caller.
140
141 $currvalue = $object->_dispatch_property($name); =item
142 $object->_dispatch_property($name, $newvalue);
143 The "_dispatch_property" method is to be used to handle dispatch of
144 property reads and writes. The $name parameter is the name of the
145 property being accessed. If $newvalue is supplied then the property
146 is to be updated, otherwise the current value is to be returned.
147 The default implementation will simply raise an error, so must be
148 overridden in subclasses.
149
151 Daniel P. Berrange
152
154 Copyright (C) 2005-2011 Daniel P. Berrange
155
157 Net::DBus, Net::DBus::Service, Net::DBus::Object,
158 Net::DBus::ProxyObject, Net::DBus::Exporter, Net::DBus::RemoteObject
159
160
161
162perl v5.38.0 2023-07-21 Net::DBus::BaseObject(3)