Der D-Bus-Client empfängt keine Signalereignisse im SystembusC++

Programme in C++. Entwicklerforum
Guest
 Der D-Bus-Client empfängt keine Signalereignisse im Systembus

Post by Guest »

Ich verwende die sdbus-cpp-Bibliothek, um zu testen, wie man einen Dienst erstellt und über einen D-Bus-Client auf seine Methoden und Signale zugreift. Die Bibliothek bietet ein Beispiel dafür, das ich für mich getestet und bearbeitet habe. Dieses Beispiel erstellt jedoch einen Dienst im Sitzungsbus und ich möchte, dass er auf dem Systembus funktioniert. Dies ist das Beispiel:
Serverseite:

Code: Select all

#include 
#include 
#include 

int main(int argc, char *argv[])
{
// Create D-Bus connection to the (either system or session) bus and requests a well-known name on it.
sdbus::ServiceName serviceName{"org.sdbuscpp.concatenator"};
auto connection = sdbus::createBusConnection(serviceName);

// Create concatenator D-Bus object.
sdbus::ObjectPath objectPath{"/org/sdbuscpp/concatenator"};
auto concatenator = sdbus::createObject(*connection, std::move(objectPath));

auto concatenate = [&concatenator](const std::vector numbers, const std::string& separator)
{
// Return error if there are no numbers in the collection
if (numbers.empty())
throw sdbus::Error(sdbus::Error::Name{"org.sdbuscpp.Concatenator.Error"}, "No numbers provided");

std::string result;
for (auto number : numbers)
{
result += (result.empty() ? std::string() : separator) + std::to_string(number);
}

// Emit 'concatenated' signal
concatenator->emitSignal("concatenated").onInterface("org.sdbuscpp.Concatenator").withArguments(result);
std::cout

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post