sdbus-c++ 1.1.0
High-level C++ D-Bus library based on systemd D-Bus implementation
|
#include <IObject.h>
Public Member Functions | |
virtual void | registerMethod (const std::string &interfaceName, std::string methodName, std::string inputSignature, std::string outputSignature, method_callback methodCallback, Flags flags={})=0 |
Registers method that the object will provide on D-Bus. More... | |
virtual void | registerMethod (const std::string &interfaceName, std::string methodName, std::string inputSignature, const std::vector< std::string > &inputNames, std::string outputSignature, const std::vector< std::string > &outputNames, method_callback methodCallback, Flags flags={})=0 |
Registers method that the object will provide on D-Bus. More... | |
virtual void | registerSignal (const std::string &interfaceName, std::string signalName, std::string signature, Flags flags={})=0 |
Registers signal that the object will emit on D-Bus. More... | |
virtual void | registerSignal (const std::string &interfaceName, std::string signalName, std::string signature, const std::vector< std::string > ¶mNames, Flags flags={})=0 |
Registers signal that the object will emit on D-Bus. More... | |
virtual void | registerProperty (const std::string &interfaceName, std::string propertyName, std::string signature, property_get_callback getCallback, Flags flags={})=0 |
Registers read-only property that the object will provide on D-Bus. More... | |
virtual void | registerProperty (const std::string &interfaceName, std::string propertyName, std::string signature, property_get_callback getCallback, property_set_callback setCallback, Flags flags={})=0 |
Registers read/write property that the object will provide on D-Bus. More... | |
virtual void | setInterfaceFlags (const std::string &interfaceName, Flags flags)=0 |
Sets flags for a given interface. More... | |
virtual void | finishRegistration ()=0 |
Finishes object API registration and publishes the object on the bus. More... | |
virtual void | unregister ()=0 |
Unregisters object's API and removes object from the bus. More... | |
virtual Signal | createSignal (const std::string &interfaceName, const std::string &signalName)=0 |
Creates a signal message. More... | |
virtual void | emitSignal (const sdbus::Signal &message)=0 |
Emits signal for this object path. More... | |
virtual void | emitPropertiesChangedSignal (const std::string &interfaceName, const std::vector< std::string > &propNames)=0 |
Emits PropertyChanged signal for specified properties under a given interface of this object path. More... | |
virtual void | emitPropertiesChangedSignal (const std::string &interfaceName)=0 |
Emits PropertyChanged signal for all properties on a given interface of this object path. More... | |
virtual void | emitInterfacesAddedSignal ()=0 |
Emits InterfacesAdded signal on this object path. More... | |
virtual void | emitInterfacesAddedSignal (const std::vector< std::string > &interfaces)=0 |
Emits InterfacesAdded signal on this object path. More... | |
virtual void | emitInterfacesRemovedSignal ()=0 |
Emits InterfacesRemoved signal on this object path. More... | |
virtual void | emitInterfacesRemovedSignal (const std::vector< std::string > &interfaces)=0 |
Emits InterfacesRemoved signal on this object path. More... | |
virtual void | addObjectManager ()=0 |
Adds an ObjectManager interface at the path of this D-Bus object. More... | |
virtual void | removeObjectManager ()=0 |
Removes an ObjectManager interface from the path of this D-Bus object. More... | |
virtual bool | hasObjectManager () const =0 |
Tests whether ObjectManager interface is added at the path of this D-Bus object. More... | |
virtual sdbus::IConnection & | getConnection () const =0 |
Provides D-Bus connection used by the object. More... | |
MethodRegistrator | registerMethod (const std::string &methodName) |
Registers method that the object will provide on D-Bus. More... | |
SignalRegistrator | registerSignal (const std::string &signalName) |
Registers signal that the object will provide on D-Bus. More... | |
PropertyRegistrator | registerProperty (const std::string &propertyName) |
Registers property that the object will provide on D-Bus. More... | |
InterfaceFlagsSetter | setInterfaceFlags (const std::string &interfaceName) |
Sets flags (annotations) for a given interface. More... | |
SignalEmitter | emitSignal (const std::string &signalName) |
Emits signal on D-Bus. More... | |
virtual const std::string & | getObjectPath () const =0 |
Returns object path of the underlying DBus object. | |
virtual const Message * | getCurrentlyProcessedMessage () const =0 |
Provides currently processed D-Bus message. More... | |
IObject class represents a D-Bus object instance identified by a specific object path. D-Bus object provides its interfaces, methods, signals and properties on a bus identified by a specific bus name.
All IObject member methods throw sdbus::Error
in case of D-Bus or sdbus-c++ error. The IObject class has been designed as thread-aware. However, the operation of creating and sending asynchronous method replies, as well as creating and emitting signals, is thread-safe by design.
|
pure virtual |
Adds an ObjectManager interface at the path of this D-Bus object.
Creates an ObjectManager interface at the specified object path on the connection. This is a convenient way to interrogate a connection to see what objects it has.
sdbus::Error | in case of failure |
|
pure virtual |
Creates a signal message.
[in] | interfaceName | Name of an interface that the signal belongs under |
[in] | signalName | Name of the signal |
Serialize signal arguments into the returned message and emit the signal by passing the message with serialized arguments to the emitSignal
function. Alternatively, use higher-level API emitSignal(const std::string& signalName)
defined below.
sdbus::Error | in case of failure |
|
pure virtual |
Emits InterfacesAdded signal on this object path.
This emits an InterfacesAdded signal on this object path, by iterating all registered interfaces on the path. All properties are queried and included in the signal. This call is equivalent to emitInterfacesAddedSignal() with an explicit list of registered interfaces. However, unlike emitInterfacesAddedSignal(interfaces), this call can figure out the list of supported interfaces itself. Furthermore, it properly adds the builtin org.freedesktop.DBus.* interfaces.
sdbus::Error | in case of failure |
|
pure virtual |
Emits InterfacesAdded signal on this object path.
This emits an InterfacesAdded signal on this object path with explicitly provided list of registered interfaces. As sdbus-c++ does currently not supported adding/removing interfaces of an existing object at run time (an object has a fixed set of interfaces registered by the time of invoking finishRegistration()), emitInterfacesAddedSignal(void) is probably what you are looking for.
sdbus::Error | in case of failure |
|
pure virtual |
Emits InterfacesRemoved signal on this object path.
This is like sd_bus_emit_object_added(), but emits an InterfacesRemoved signal on this object path. This only includes any registered interfaces but skips the properties. This function shall be called (just) before destroying the object.
sdbus::Error | in case of failure |
|
pure virtual |
Emits InterfacesRemoved signal on this object path.
This emits an InterfacesRemoved signal on the given path with explicitly provided list of registered interfaces. As sdbus-c++ does currently not supported adding/removing interfaces of an existing object at run time (an object has a fixed set of interfaces registered by the time of invoking finishRegistration()), emitInterfacesRemovedSignal(void) is probably what you are looking for.
sdbus::Error | in case of failure |
|
pure virtual |
Emits PropertyChanged signal for all properties on a given interface of this object path.
[in] | interfaceName | Name of an interface |
sdbus::Error | in case of failure |
|
pure virtual |
Emits PropertyChanged signal for specified properties under a given interface of this object path.
[in] | interfaceName | Name of an interface that properties belong to |
[in] | propNames | Names of properties that will be included in the PropertiesChanged signal |
sdbus::Error | in case of failure |
|
pure virtual |
Emits signal for this object path.
[in] | message | Signal message to be sent out |
Note: To avoid messing with messages, use higher-level API defined below.
sdbus::Error | in case of failure |
|
inline |
Emits signal on D-Bus.
[in] | signalName | Name of the signal |
This is a high-level, convenience way of emitting D-Bus signals that abstracts from the D-Bus message concept. Signal arguments are automatically serialized in a message and D-Bus signatures automatically deduced from the provided native arguments.
Example of use:
sdbus::Error | in case of failure |
|
pure virtual |
Finishes object API registration and publishes the object on the bus.
The method exports all up to now registered methods, signals and properties on D-Bus. Must be called after all methods, signals and properties have been registered.
sdbus::Error | in case of failure |
|
pure virtual |
Provides D-Bus connection used by the object.
|
pure virtual |
Provides currently processed D-Bus message.
This method provides immutable access to the currently processed incoming D-Bus message. "Currently processed" means that the registered callback handler(s) for that message are being invoked. This method is meant to be called from within a callback handler (e.g. D-Bus method implementation handler). In such a case it is guaranteed to return a valid pointer to the D-Bus message for which the handler is called. If called from other contexts/threads, it may return a nonzero pointer or a nullptr, depending on whether a message was processed at the time of call or not, but the value is nondereferencable, since the pointed-to message may have gone in the meantime.
|
pure virtual |
Tests whether ObjectManager interface is added at the path of this D-Bus object.
|
pure virtual |
Registers method that the object will provide on D-Bus.
[in] | interfaceName | Name of an interface that the method will belong to |
[in] | methodName | Name of the method |
[in] | inputSignature | D-Bus signature of method input parameters |
[in] | inputNames | Names of input parameters |
[in] | outputSignature | D-Bus signature of method output parameters |
[in] | outputNames | Names of output parameters |
[in] | methodCallback | Callback that implements the body of the method |
[in] | flags | D-Bus method flags (privileged, deprecated, or no reply) |
Provided names of input and output parameters will be included in the introspection description (given that at least version 242 of underlying libsystemd library is used; otherwise, names of parameters are ignored). This usually helps better describe the API to the introspector.
sdbus::Error | in case of failure |
|
pure virtual |
Registers method that the object will provide on D-Bus.
[in] | interfaceName | Name of an interface that the method will belong to |
[in] | methodName | Name of the method |
[in] | inputSignature | D-Bus signature of method input parameters |
[in] | outputSignature | D-Bus signature of method output parameters |
[in] | methodCallback | Callback that implements the body of the method |
[in] | flags | D-Bus method flags (privileged, deprecated, or no reply) |
sdbus::Error | in case of failure |
|
inline |
Registers method that the object will provide on D-Bus.
[in] | methodName | Name of the method |
This is a high-level, convenience way of registering D-Bus methods that abstracts from the D-Bus message concept. Method arguments/return value are automatically (de)serialized in a message and D-Bus signatures automatically deduced from the parameters and return type of the provided native method implementation callback.
Example of use:
sdbus::Error | in case of failure |
|
pure virtual |
Registers read-only property that the object will provide on D-Bus.
[in] | interfaceName | Name of an interface that the property will fall under |
[in] | propertyName | Name of the property |
[in] | signature | D-Bus signature of property parameters |
[in] | getCallback | Callback that implements the body of the property getter |
[in] | flags | D-Bus property flags (deprecated, property update behavior) |
sdbus::Error | in case of failure |
|
pure virtual |
Registers read/write property that the object will provide on D-Bus.
[in] | interfaceName | Name of an interface that the property will fall under |
[in] | propertyName | Name of the property |
[in] | signature | D-Bus signature of property parameters |
[in] | getCallback | Callback that implements the body of the property getter |
[in] | setCallback | Callback that implements the body of the property setter |
[in] | flags | D-Bus property flags (deprecated, property update behavior) |
sdbus::Error | in case of failure |
|
inline |
Registers property that the object will provide on D-Bus.
[in] | propertyName | Name of the property |
This is a high-level, convenience way of registering D-Bus properties that abstracts from the D-Bus message concept. Property arguments are automatically (de)serialized in a message and D-Bus signatures automatically deduced from the provided native callbacks.
Example of use:
sdbus::Error | in case of failure |
|
pure virtual |
Registers signal that the object will emit on D-Bus.
[in] | interfaceName | Name of an interface that the signal will fall under |
[in] | signalName | Name of the signal |
[in] | signature | D-Bus signature of signal parameters |
[in] | paramNames | Names of parameters of the signal |
[in] | flags | D-Bus signal flags (deprecated) |
Provided names of signal output parameters will be included in the introspection description (given that at least version 242 of underlying libsystemd library is used; otherwise, names of parameters are ignored). This usually helps better describe the API to the introspector.
sdbus::Error | in case of failure |
|
pure virtual |
Registers signal that the object will emit on D-Bus.
[in] | interfaceName | Name of an interface that the signal will fall under |
[in] | signalName | Name of the signal |
[in] | signature | D-Bus signature of signal parameters |
[in] | flags | D-Bus signal flags (deprecated) |
sdbus::Error | in case of failure |
|
inline |
Registers signal that the object will provide on D-Bus.
[in] | signalName | Name of the signal |
This is a high-level, convenience way of registering D-Bus signals that abstracts from the D-Bus message concept. Signal arguments are automatically (de)serialized in a message and D-Bus signatures automatically deduced from the provided native parameters.
Example of use:
sdbus::Error | in case of failure |
|
pure virtual |
Removes an ObjectManager interface from the path of this D-Bus object.
sdbus::Error | in case of failure |
|
inline |
Sets flags (annotations) for a given interface.
[in] | interfaceName | Name of an interface whose flags will be set |
This is a high-level, convenience alternative to the other setInterfaceFlags overload.
Example of use:
sdbus::Error | in case of failure |
|
pure virtual |
Sets flags for a given interface.
[in] | interfaceName | Name of an interface whose flags will be set |
[in] | flags | Flags to be set |
sdbus::Error | in case of failure |
|
pure virtual |
Unregisters object's API and removes object from the bus.
This method unregisters the object, its interfaces, methods, signals and properties from the bus. Unregistration is done automatically also in object's destructor. This method makes sense if, in the process of object removal, we need to make sure that callbacks are unregistered explicitly before the final destruction of the object instance.
sdbus::Error | in case of failure |