forked from Kistler-Group/sdbus-cpp
Add getConnection() method to IObject so we ask Object about its connection
This commit is contained in:
@@ -173,6 +173,13 @@ namespace sdbus {
|
|||||||
*/
|
*/
|
||||||
virtual void emitSignal(const sdbus::Signal& message) = 0;
|
virtual void emitSignal(const sdbus::Signal& message) = 0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Provides D-Bus connection used by the object
|
||||||
|
*
|
||||||
|
* @return Reference to the D-Bus connection
|
||||||
|
*/
|
||||||
|
virtual sdbus::IConnection& getConnection() const = 0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @brief Registers method that the object will provide on D-Bus
|
* @brief Registers method that the object will provide on D-Bus
|
||||||
*
|
*
|
||||||
|
@@ -74,7 +74,7 @@ namespace sdbus {
|
|||||||
***********************************************/
|
***********************************************/
|
||||||
template <typename... _Interfaces>
|
template <typename... _Interfaces>
|
||||||
class Interfaces
|
class Interfaces
|
||||||
: private ObjectHolder<IObject>
|
: protected ObjectHolder<IObject>
|
||||||
, public _Interfaces...
|
, public _Interfaces...
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -96,7 +96,7 @@ namespace sdbus {
|
|||||||
***********************************************/
|
***********************************************/
|
||||||
template <typename... _Interfaces>
|
template <typename... _Interfaces>
|
||||||
class ProxyInterfaces
|
class ProxyInterfaces
|
||||||
: private ObjectHolder<IObjectProxy>
|
: protected ObjectHolder<IObjectProxy>
|
||||||
, public _Interfaces...
|
, public _Interfaces...
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@@ -130,6 +130,11 @@ void Object::emitSignal(const sdbus::Signal& message)
|
|||||||
message.send();
|
message.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sdbus::IConnection& Object::getConnection() const
|
||||||
|
{
|
||||||
|
return dynamic_cast<sdbus::IConnection&>(connection_);
|
||||||
|
}
|
||||||
|
|
||||||
const std::vector<sd_bus_vtable>& Object::createInterfaceVTable(InterfaceData& interfaceData)
|
const std::vector<sd_bus_vtable>& Object::createInterfaceVTable(InterfaceData& interfaceData)
|
||||||
{
|
{
|
||||||
auto& vtable = interfaceData.vtable_;
|
auto& vtable = interfaceData.vtable_;
|
||||||
|
@@ -77,6 +77,8 @@ namespace internal {
|
|||||||
sdbus::Signal createSignal(const std::string& interfaceName, const std::string& signalName) override;
|
sdbus::Signal createSignal(const std::string& interfaceName, const std::string& signalName) override;
|
||||||
void emitSignal(const sdbus::Signal& message) override;
|
void emitSignal(const sdbus::Signal& message) override;
|
||||||
|
|
||||||
|
sdbus::IConnection& getConnection() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
using InterfaceName = std::string;
|
using InterfaceName = std::string;
|
||||||
struct InterfaceData
|
struct InterfaceData
|
||||||
|
Reference in New Issue
Block a user