mirror of
https://github.com/Kistler-Group/sdbus-cpp.git
synced 2025-08-02 11:34:26 +02:00
Make code a bit cleaner and more consistent
This commit is contained in:
@@ -36,8 +36,8 @@
|
|||||||
namespace sdbus { namespace internal {
|
namespace sdbus { namespace internal {
|
||||||
|
|
||||||
Connection::Connection(Connection::BusType type, std::unique_ptr<ISdBus>&& interface)
|
Connection::Connection(Connection::BusType type, std::unique_ptr<ISdBus>&& interface)
|
||||||
: busType_(type),
|
: busType_(type)
|
||||||
iface_(std::move(interface))
|
, iface_(std::move(interface))
|
||||||
{
|
{
|
||||||
auto bus = openBus(busType_);
|
auto bus = openBus(busType_);
|
||||||
bus_.reset(bus);
|
bus_.reset(bus);
|
||||||
@@ -92,28 +92,28 @@ void Connection::leaveProcessingLoop()
|
|||||||
joinWithProcessingLoop();
|
joinWithProcessingLoop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void* Connection::addObjectVTable( const std::string& objectPath
|
sd_bus_slot* Connection::addObjectVTable( const std::string& objectPath
|
||||||
, const std::string& interfaceName
|
, const std::string& interfaceName
|
||||||
, const void* vtable
|
, const sd_bus_vtable* vtable
|
||||||
, void* userData )
|
, void* userData )
|
||||||
{
|
{
|
||||||
sd_bus_slot *slot{};
|
sd_bus_slot *slot{};
|
||||||
|
|
||||||
auto r = iface_->sd_bus_add_object_vtable( bus_.get()
|
auto r = iface_->sd_bus_add_object_vtable( bus_.get()
|
||||||
, &slot
|
, &slot
|
||||||
, objectPath.c_str()
|
, objectPath.c_str()
|
||||||
, interfaceName.c_str()
|
, interfaceName.c_str()
|
||||||
, static_cast<const sd_bus_vtable*>(vtable)
|
, vtable
|
||||||
, userData );
|
, userData );
|
||||||
|
|
||||||
SDBUS_THROW_ERROR_IF(r < 0, "Failed to register object vtable", -r);
|
SDBUS_THROW_ERROR_IF(r < 0, "Failed to register object vtable", -r);
|
||||||
|
|
||||||
return slot;
|
return slot;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::removeObjectVTable(void* vtableHandle)
|
void Connection::removeObjectVTable(sd_bus_slot* vtableHandle)
|
||||||
{
|
{
|
||||||
iface_->sd_bus_slot_unref((sd_bus_slot *)vtableHandle);
|
iface_->sd_bus_slot_unref(vtableHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
sdbus::MethodCall Connection::createMethodCall( const std::string& destination
|
sdbus::MethodCall Connection::createMethodCall( const std::string& destination
|
||||||
@@ -127,11 +127,11 @@ sdbus::MethodCall Connection::createMethodCall( const std::string& destination
|
|||||||
SCOPE_EXIT{ iface_->sd_bus_message_unref(sdbusMsg); };
|
SCOPE_EXIT{ iface_->sd_bus_message_unref(sdbusMsg); };
|
||||||
|
|
||||||
auto r = iface_->sd_bus_message_new_method_call( bus_.get()
|
auto r = iface_->sd_bus_message_new_method_call( bus_.get()
|
||||||
, &sdbusMsg
|
, &sdbusMsg
|
||||||
, destination.c_str()
|
, destination.c_str()
|
||||||
, objectPath.c_str()
|
, objectPath.c_str()
|
||||||
, interfaceName.c_str()
|
, interfaceName.c_str()
|
||||||
, methodName.c_str() );
|
, methodName.c_str() );
|
||||||
|
|
||||||
SDBUS_THROW_ERROR_IF(r < 0, "Failed to create method call", -r);
|
SDBUS_THROW_ERROR_IF(r < 0, "Failed to create method call", -r);
|
||||||
|
|
||||||
@@ -145,24 +145,24 @@ sdbus::Signal Connection::createSignal( const std::string& objectPath
|
|||||||
sd_bus_message *sdbusSignal{};
|
sd_bus_message *sdbusSignal{};
|
||||||
|
|
||||||
// Returned message will become an owner of sdbusSignal
|
// Returned message will become an owner of sdbusSignal
|
||||||
SCOPE_EXIT{ sd_bus_message_unref(sdbusSignal); };
|
SCOPE_EXIT{ iface_->sd_bus_message_unref(sdbusSignal); };
|
||||||
|
|
||||||
auto r = iface_->sd_bus_message_new_signal( bus_.get()
|
auto r = iface_->sd_bus_message_new_signal( bus_.get()
|
||||||
, &sdbusSignal
|
, &sdbusSignal
|
||||||
, objectPath.c_str()
|
, objectPath.c_str()
|
||||||
, interfaceName.c_str()
|
, interfaceName.c_str()
|
||||||
, signalName.c_str() );
|
, signalName.c_str() );
|
||||||
|
|
||||||
SDBUS_THROW_ERROR_IF(r < 0, "Failed to create signal", -r);
|
SDBUS_THROW_ERROR_IF(r < 0, "Failed to create signal", -r);
|
||||||
|
|
||||||
return Signal(sdbusSignal);
|
return Signal(sdbusSignal);
|
||||||
}
|
}
|
||||||
|
|
||||||
void* Connection::registerSignalHandler( const std::string& objectPath
|
sd_bus_slot* Connection::registerSignalHandler( const std::string& objectPath
|
||||||
, const std::string& interfaceName
|
, const std::string& interfaceName
|
||||||
, const std::string& signalName
|
, const std::string& signalName
|
||||||
, sd_bus_message_handler_t callback
|
, sd_bus_message_handler_t callback
|
||||||
, void* userData )
|
, void* userData )
|
||||||
{
|
{
|
||||||
sd_bus_slot *slot{};
|
sd_bus_slot *slot{};
|
||||||
|
|
||||||
@@ -174,9 +174,9 @@ void* Connection::registerSignalHandler( const std::string& objectPath
|
|||||||
return slot;
|
return slot;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::unregisterSignalHandler(void* handlerCookie)
|
void Connection::unregisterSignalHandler(sd_bus_slot* handlerCookie)
|
||||||
{
|
{
|
||||||
iface_->sd_bus_slot_unref((sd_bus_slot *)handlerCookie);
|
iface_->sd_bus_slot_unref(handlerCookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::sendReplyAsynchronously(const sdbus::MethodReply& reply)
|
void Connection::sendReplyAsynchronously(const sdbus::MethodReply& reply)
|
||||||
|
@@ -52,7 +52,7 @@ namespace sdbus { namespace internal {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Connection(BusType type, std::unique_ptr<ISdBus>&& interface);
|
Connection(BusType type, std::unique_ptr<ISdBus>&& interface);
|
||||||
~Connection();
|
~Connection() override;
|
||||||
|
|
||||||
void requestName(const std::string& name) override;
|
void requestName(const std::string& name) override;
|
||||||
void releaseName(const std::string& name) override;
|
void releaseName(const std::string& name) override;
|
||||||
@@ -60,11 +60,11 @@ namespace sdbus { namespace internal {
|
|||||||
void enterProcessingLoopAsync() override;
|
void enterProcessingLoopAsync() override;
|
||||||
void leaveProcessingLoop() override;
|
void leaveProcessingLoop() override;
|
||||||
|
|
||||||
void* addObjectVTable( const std::string& objectPath
|
sd_bus_slot* addObjectVTable( const std::string& objectPath
|
||||||
, const std::string& interfaceName
|
, const std::string& interfaceName
|
||||||
, const void* vtable
|
, const sd_bus_vtable* vtable
|
||||||
, void* userData ) override;
|
, void* userData ) override;
|
||||||
void removeObjectVTable(void* vtableHandle) override;
|
void removeObjectVTable(sd_bus_slot* vtableHandle) override;
|
||||||
|
|
||||||
sdbus::MethodCall createMethodCall( const std::string& destination
|
sdbus::MethodCall createMethodCall( const std::string& destination
|
||||||
, const std::string& objectPath
|
, const std::string& objectPath
|
||||||
@@ -74,12 +74,12 @@ namespace sdbus { namespace internal {
|
|||||||
, const std::string& interfaceName
|
, const std::string& interfaceName
|
||||||
, const std::string& signalName ) const override;
|
, const std::string& signalName ) const override;
|
||||||
|
|
||||||
void* registerSignalHandler( const std::string& objectPath
|
sd_bus_slot* registerSignalHandler( const std::string& objectPath
|
||||||
, const std::string& interfaceName
|
, const std::string& interfaceName
|
||||||
, const std::string& signalName
|
, const std::string& signalName
|
||||||
, sd_bus_message_handler_t callback
|
, sd_bus_message_handler_t callback
|
||||||
, void* userData ) override;
|
, void* userData ) override;
|
||||||
void unregisterSignalHandler(void* handlerCookie) override;
|
void unregisterSignalHandler(sd_bus_slot* handlerCookie) override;
|
||||||
|
|
||||||
void sendReplyAsynchronously(const sdbus::MethodReply& reply) override;
|
void sendReplyAsynchronously(const sdbus::MethodReply& reply) override;
|
||||||
|
|
||||||
|
@@ -43,11 +43,11 @@ namespace internal {
|
|||||||
class IConnection
|
class IConnection
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual void* addObjectVTable( const std::string& objectPath
|
virtual sd_bus_slot* addObjectVTable( const std::string& objectPath
|
||||||
, const std::string& interfaceName
|
, const std::string& interfaceName
|
||||||
, const void* vtable
|
, const sd_bus_vtable* vtable
|
||||||
, void* userData ) = 0;
|
, void* userData ) = 0;
|
||||||
virtual void removeObjectVTable(void* vtableHandle) = 0;
|
virtual void removeObjectVTable(sd_bus_slot* vtableHandle) = 0;
|
||||||
|
|
||||||
virtual sdbus::MethodCall createMethodCall( const std::string& destination
|
virtual sdbus::MethodCall createMethodCall( const std::string& destination
|
||||||
, const std::string& objectPath
|
, const std::string& objectPath
|
||||||
@@ -58,12 +58,12 @@ namespace internal {
|
|||||||
, const std::string& interfaceName
|
, const std::string& interfaceName
|
||||||
, const std::string& signalName ) const = 0;
|
, const std::string& signalName ) const = 0;
|
||||||
|
|
||||||
virtual void* registerSignalHandler( const std::string& objectPath
|
virtual sd_bus_slot* registerSignalHandler( const std::string& objectPath
|
||||||
, const std::string& interfaceName
|
, const std::string& interfaceName
|
||||||
, const std::string& signalName
|
, const std::string& signalName
|
||||||
, sd_bus_message_handler_t callback
|
, sd_bus_message_handler_t callback
|
||||||
, void* userData ) = 0;
|
, void* userData ) = 0;
|
||||||
virtual void unregisterSignalHandler(void* handlerCookie) = 0;
|
virtual void unregisterSignalHandler(sd_bus_slot* handlerCookie) = 0;
|
||||||
|
|
||||||
virtual void enterProcessingLoopAsync() = 0;
|
virtual void enterProcessingLoopAsync() = 0;
|
||||||
virtual void leaveProcessingLoop() = 0;
|
virtual void leaveProcessingLoop() = 0;
|
||||||
|
@@ -235,9 +235,9 @@ void Object::activateInterfaceVTable( const std::string& interfaceName
|
|||||||
, const std::vector<sd_bus_vtable>& vtable )
|
, const std::vector<sd_bus_vtable>& vtable )
|
||||||
{
|
{
|
||||||
// Tell, don't ask
|
// Tell, don't ask
|
||||||
auto slot = (sd_bus_slot*) connection_.addObjectVTable(objectPath_, interfaceName, &vtable[0], this);
|
auto slot = connection_.addObjectVTable(objectPath_, interfaceName, &vtable[0], this);
|
||||||
interfaceData.slot_.reset(slot);
|
interfaceData.slot_.reset(slot);
|
||||||
interfaceData.slot_.get_deleter() = [this](void *slot){ connection_.removeObjectVTable(slot); };
|
interfaceData.slot_.get_deleter() = [this](sd_bus_slot *slot){ connection_.removeObjectVTable(slot); };
|
||||||
}
|
}
|
||||||
|
|
||||||
int Object::sdbus_method_callback(sd_bus_message *sdbusMessage, void *userData, sd_bus_error *retError)
|
int Object::sdbus_method_callback(sd_bus_message *sdbusMessage, void *userData, sd_bus_error *retError)
|
||||||
|
@@ -118,7 +118,7 @@ namespace internal {
|
|||||||
std::vector<sd_bus_vtable> vtable_;
|
std::vector<sd_bus_vtable> vtable_;
|
||||||
Flags flags_;
|
Flags flags_;
|
||||||
|
|
||||||
std::unique_ptr<void, std::function<void(void*)>> slot_;
|
std::unique_ptr<sd_bus_slot, std::function<void(sd_bus_slot*)>> slot_;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const std::vector<sd_bus_vtable>& createInterfaceVTable(InterfaceData& interfaceData);
|
static const std::vector<sd_bus_vtable>& createInterfaceVTable(InterfaceData& interfaceData);
|
||||||
|
@@ -131,7 +131,7 @@ void ObjectProxy::registerSignalHandlers(sdbus::internal::IConnection& connectio
|
|||||||
, &ObjectProxy::sdbus_signal_callback
|
, &ObjectProxy::sdbus_signal_callback
|
||||||
, this );
|
, this );
|
||||||
slot.reset(rawSlotPtr);
|
slot.reset(rawSlotPtr);
|
||||||
slot.get_deleter() = [&connection](void *slot){ connection.unregisterSignalHandler(slot); };
|
slot.get_deleter() = [&connection](sd_bus_slot *slot){ connection.unregisterSignalHandler(slot); };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -50,7 +50,7 @@ namespace internal {
|
|||||||
ObjectProxy( std::unique_ptr<sdbus::internal::IConnection>&& connection
|
ObjectProxy( std::unique_ptr<sdbus::internal::IConnection>&& connection
|
||||||
, std::string destination
|
, std::string destination
|
||||||
, std::string objectPath );
|
, std::string objectPath );
|
||||||
~ObjectProxy();
|
~ObjectProxy() override;
|
||||||
|
|
||||||
MethodCall createMethodCall(const std::string& interfaceName, const std::string& methodName) override;
|
MethodCall createMethodCall(const std::string& interfaceName, const std::string& methodName) override;
|
||||||
MethodReply callMethod(const MethodCall& message) override;
|
MethodReply callMethod(const MethodCall& message) override;
|
||||||
@@ -81,7 +81,7 @@ namespace internal {
|
|||||||
struct SignalData
|
struct SignalData
|
||||||
{
|
{
|
||||||
signal_handler callback_;
|
signal_handler callback_;
|
||||||
std::unique_ptr<void, std::function<void(void*)>> slot_;
|
std::unique_ptr<sd_bus_slot, std::function<void(sd_bus_slot*)>> slot_;
|
||||||
};
|
};
|
||||||
std::map<SignalName, SignalData> signals_;
|
std::map<SignalName, SignalData> signals_;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user