sdbus-c++  0.8.3
High-level C++ D-Bus library based on systemd D-Bus implementation
IObject.h
Go to the documentation of this file.
1 
27 #ifndef SDBUS_CXX_IOBJECT_H_
28 #define SDBUS_CXX_IOBJECT_H_
29 
31 #include <sdbus-c++/TypeTraits.h>
32 #include <sdbus-c++/Flags.h>
33 #include <functional>
34 #include <string>
35 #include <memory>
36 #include <vector>
37 
38 // Forward declarations
39 namespace sdbus {
40  class Signal;
41  class IConnection;
42 }
43 
44 namespace sdbus {
45 
46  /********************************************/
59  class IObject
60  {
61  public:
62  virtual ~IObject() = default;
63 
76  virtual void registerMethod( const std::string& interfaceName
77  , std::string methodName
78  , std::string inputSignature
79  , std::string outputSignature
80  , method_callback methodCallback
81  , Flags flags = {} ) = 0;
82 
102  virtual void registerMethod( const std::string& interfaceName
103  , std::string methodName
104  , std::string inputSignature
105  , const std::vector<std::string>& inputNames
106  , std::string outputSignature
107  , const std::vector<std::string>& outputNames
108  , method_callback methodCallback
109  , Flags flags = {} ) = 0;
110 
121  virtual void registerSignal( const std::string& interfaceName
122  , std::string signalName
123  , std::string signature
124  , Flags flags = {} ) = 0;
125 
142  virtual void registerSignal( const std::string& interfaceName
143  , std::string signalName
144  , std::string signature
145  , const std::vector<std::string>& paramNames
146  , Flags flags = {} ) = 0;
147 
159  virtual void registerProperty( const std::string& interfaceName
160  , std::string propertyName
161  , std::string signature
162  , property_get_callback getCallback
163  , Flags flags = {} ) = 0;
164 
177  virtual void registerProperty( const std::string& interfaceName
178  , std::string propertyName
179  , std::string signature
180  , property_get_callback getCallback
181  , property_set_callback setCallback
182  , Flags flags = {} ) = 0;
183 
192  virtual void setInterfaceFlags(const std::string& interfaceName, Flags flags) = 0;
193 
202  virtual void finishRegistration() = 0;
203 
214  virtual void unregister() = 0;
215 
229  virtual Signal createSignal(const std::string& interfaceName, const std::string& signalName) = 0;
230 
240  virtual void emitSignal(const sdbus::Signal& message) = 0;
241 
250  virtual void emitPropertiesChangedSignal(const std::string& interfaceName, const std::vector<std::string>& propNames) = 0;
251 
259  virtual void emitPropertiesChangedSignal(const std::string& interfaceName) = 0;
260 
273  virtual void emitInterfacesAddedSignal() = 0;
274 
286  virtual void emitInterfacesAddedSignal(const std::vector<std::string>& interfaces) = 0;
287 
297  virtual void emitInterfacesRemovedSignal() = 0;
298 
310  virtual void emitInterfacesRemovedSignal(const std::vector<std::string>& interfaces) = 0;
311 
321  virtual void addObjectManager() = 0;
322 
328  virtual void removeObjectManager() = 0;
329 
334  virtual bool hasObjectManager() const = 0;
335 
341  virtual sdbus::IConnection& getConnection() const = 0;
342 
361  [[nodiscard]] MethodRegistrator registerMethod(const std::string& methodName);
362 
380  [[nodiscard]] SignalRegistrator registerSignal(const std::string& signalName);
381 
399  [[nodiscard]] PropertyRegistrator registerProperty(const std::string& propertyName);
400 
416  [[nodiscard]] InterfaceFlagsSetter setInterfaceFlags(const std::string& interfaceName);
417 
437  [[nodiscard]] SignalEmitter emitSignal(const std::string& signalName);
438 
442  virtual const std::string& getObjectPath() const = 0;
443  };
444 
445  // Out-of-line member definitions
446 
447  inline MethodRegistrator IObject::registerMethod(const std::string& methodName)
448  {
449  return MethodRegistrator(*this, methodName);
450  }
451 
452  inline SignalRegistrator IObject::registerSignal(const std::string& signalName)
453  {
454  return SignalRegistrator(*this, signalName);
455  }
456 
457  inline PropertyRegistrator IObject::registerProperty(const std::string& propertyName)
458  {
459  return PropertyRegistrator(*this, propertyName);
460  }
461 
462  inline InterfaceFlagsSetter IObject::setInterfaceFlags(const std::string& interfaceName)
463  {
464  return InterfaceFlagsSetter(*this, interfaceName);
465  }
466 
467  inline SignalEmitter IObject::emitSignal(const std::string& signalName)
468  {
469  return SignalEmitter(*this, signalName);
470  }
471 
490  [[nodiscard]] std::unique_ptr<sdbus::IObject> createObject(sdbus::IConnection& connection, std::string objectPath);
491 
492 }
493 
495 
496 #endif /* SDBUS_CXX_IOBJECT_H_ */
std::unique_ptr< sdbus::IObject > createObject(sdbus::IConnection &connection, std::string objectPath)
Creates instance representing a D-Bus object.
Definition: Flags.h:37
Definition: IConnection.h:48
Definition: IObject.h:60
virtual bool hasObjectManager() const =0
Tests whether ObjectManager interface is added at the path of this D-Bus object.
virtual void setInterfaceFlags(const std::string &interfaceName, Flags flags)=0
Sets flags for a given interface.
virtual void registerSignal(const std::string &interfaceName, std::string signalName, std::string signature, const std::vector< std::string > &paramNames, Flags flags={})=0
Registers signal that the object will emit on D-Bus.
virtual void removeObjectManager()=0
Removes an ObjectManager interface from the path of this D-Bus object.
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.
virtual void emitInterfacesRemovedSignal()=0
Emits InterfacesRemoved signal on this object path.
virtual const std::string & getObjectPath() const =0
Returns object path of the underlying DBus object.
virtual void emitSignal(const sdbus::Signal &message)=0
Emits signal for this object path.
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.
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.
virtual void emitInterfacesAddedSignal(const std::vector< std::string > &interfaces)=0
Emits InterfacesAdded signal on this object path.
virtual Signal createSignal(const std::string &interfaceName, const std::string &signalName)=0
Creates a signal message.
virtual void addObjectManager()=0
Adds an ObjectManager interface at the path of this D-Bus object.
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.
virtual sdbus::IConnection & getConnection() const =0
Provides D-Bus connection used by the object.
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.
virtual void emitInterfacesAddedSignal()=0
Emits InterfacesAdded signal on this object path.
virtual void finishRegistration()=0
Finishes object API registration and publishes the object on the bus.
virtual void emitInterfacesRemovedSignal(const std::vector< std::string > &interfaces)=0
Emits InterfacesRemoved signal on this object path.
virtual void emitPropertiesChangedSignal(const std::string &interfaceName)=0
Emits PropertyChanged signal for all properties on a given interface of this object path.
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.
virtual void unregister()=0
Unregisters object's API and removes object from the bus.
Definition: ConvenienceApiClasses.h:129
Definition: ConvenienceApiClasses.h:51
Definition: ConvenienceApiClasses.h:104
Definition: ConvenienceApiClasses.h:148
Definition: ConvenienceApiClasses.h:81
Definition: Message.h:203