sdbusplus提供了方法可以根据条件过滤signal:
//server_send_signal.cpp
#include <sdbusplus/asio/connection.hpp>
#include <sdbusplus/asio/object_server.hpp>
#include <sdbusplus/bus.hpp>
#include <iostream>
#include <string>
using namespace std;
shared_ptr <sdbusplus::asio::connection> bus;
int addInt(int d1, int d2)
{
return d1 + d2;
}
string addString(string s1, string s2)
{
string res = s1 + s2;
sdbusplus::message_t m = bus->new_signal("/calculate_obj","calculate_infterface.data", "MethodCallAddString");
m.append(s1, s2);
m.append(res);
m.signal_send();
return res;
}
int main()
{
boost::asio::io_context io;
auto conn = std::make_shared<sdbusplus::asio::connection>(io);
bus = conn;
conn->request_name("calculate.service");
auto server = sdbusplus::asio::object_server(conn);
shared_ptr&l