mirror of
https://github.com/Kistler-Group/sdbus-cpp.git
synced 2025-07-31 18:44:27 +02:00
Make Message's setDestination() thread safe
This commit is contained in:
@@ -83,6 +83,8 @@ namespace sdbus::internal {
|
|||||||
virtual int sd_bus_flush(sd_bus *bus) = 0;
|
virtual int sd_bus_flush(sd_bus *bus) = 0;
|
||||||
virtual sd_bus *sd_bus_flush_close_unref(sd_bus *bus) = 0;
|
virtual sd_bus *sd_bus_flush_close_unref(sd_bus *bus) = 0;
|
||||||
|
|
||||||
|
virtual int sd_bus_message_set_destination(sd_bus_message *m, const char *destination) = 0;
|
||||||
|
|
||||||
virtual int sd_bus_query_sender_creds(sd_bus_message *m, uint64_t mask, sd_bus_creds **c) = 0;
|
virtual int sd_bus_query_sender_creds(sd_bus_message *m, uint64_t mask, sd_bus_creds **c) = 0;
|
||||||
virtual sd_bus_creds* sd_bus_creds_unref(sd_bus_creds *c) = 0;
|
virtual sd_bus_creds* sd_bus_creds_unref(sd_bus_creds *c) = 0;
|
||||||
|
|
||||||
|
@@ -820,7 +820,7 @@ void Signal::send() const
|
|||||||
|
|
||||||
void Signal::setDestination(const std::string& destination)
|
void Signal::setDestination(const std::string& destination)
|
||||||
{
|
{
|
||||||
auto r = sd_bus_message_set_destination((sd_bus_message*)msg_, destination.c_str());
|
auto r = sdbus_->sd_bus_message_set_destination((sd_bus_message*)msg_, destination.c_str());
|
||||||
SDBUS_THROW_ERROR_IF(r < 0, "Failed to set signal destination", -r);
|
SDBUS_THROW_ERROR_IF(r < 0, "Failed to set signal destination", -r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -260,6 +260,13 @@ sd_bus* SdBus::sd_bus_flush_close_unref(sd_bus *bus)
|
|||||||
return ::sd_bus_flush_close_unref(bus);
|
return ::sd_bus_flush_close_unref(bus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int SdBus::sd_bus_message_set_destination(sd_bus_message *m, const char *destination)
|
||||||
|
{
|
||||||
|
std::lock_guard lock(sdbusMutex_);
|
||||||
|
|
||||||
|
return ::sd_bus_message_set_destination(m, destination);
|
||||||
|
}
|
||||||
|
|
||||||
int SdBus::sd_bus_query_sender_creds(sd_bus_message *m, uint64_t mask, sd_bus_creds **c)
|
int SdBus::sd_bus_query_sender_creds(sd_bus_message *m, uint64_t mask, sd_bus_creds **c)
|
||||||
{
|
{
|
||||||
std::lock_guard lock(sdbusMutex_);
|
std::lock_guard lock(sdbusMutex_);
|
||||||
|
@@ -75,6 +75,8 @@ public:
|
|||||||
virtual int sd_bus_flush(sd_bus *bus) override;
|
virtual int sd_bus_flush(sd_bus *bus) override;
|
||||||
virtual sd_bus *sd_bus_flush_close_unref(sd_bus *bus) override;
|
virtual sd_bus *sd_bus_flush_close_unref(sd_bus *bus) override;
|
||||||
|
|
||||||
|
virtual int sd_bus_message_set_destination(sd_bus_message *m, const char *destination) override;
|
||||||
|
|
||||||
virtual int sd_bus_query_sender_creds(sd_bus_message *m, uint64_t mask, sd_bus_creds **c) override;
|
virtual int sd_bus_query_sender_creds(sd_bus_message *m, uint64_t mask, sd_bus_creds **c) override;
|
||||||
virtual sd_bus_creds* sd_bus_creds_unref(sd_bus_creds *c) override;
|
virtual sd_bus_creds* sd_bus_creds_unref(sd_bus_creds *c) override;
|
||||||
|
|
||||||
|
@@ -74,6 +74,8 @@ public:
|
|||||||
MOCK_METHOD1(sd_bus_flush, int(sd_bus *bus));
|
MOCK_METHOD1(sd_bus_flush, int(sd_bus *bus));
|
||||||
MOCK_METHOD1(sd_bus_flush_close_unref, sd_bus *(sd_bus *bus));
|
MOCK_METHOD1(sd_bus_flush_close_unref, sd_bus *(sd_bus *bus));
|
||||||
|
|
||||||
|
MOCK_METHOD2(sd_bus_message_set_destination, int(sd_bus_message *m, const char *destination));
|
||||||
|
|
||||||
MOCK_METHOD3(sd_bus_query_sender_creds, int(sd_bus_message *, uint64_t, sd_bus_creds **));
|
MOCK_METHOD3(sd_bus_query_sender_creds, int(sd_bus_message *, uint64_t, sd_bus_creds **));
|
||||||
MOCK_METHOD1(sd_bus_creds_unref, sd_bus_creds*(sd_bus_creds *));
|
MOCK_METHOD1(sd_bus_creds_unref, sd_bus_creds*(sd_bus_creds *));
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user