dbus的method操作的方式也比较类似,可以尝试封装成通用函数:
//dbus_call.hpp
#pragma once#include <utility>
#include <boost/asio.hpp>
#include <sdbusplus/asio/connection.hpp>
#include <sdbusplus/bus.hpp>
#include <sdbusplus/message/native_types.hpp>
#include <string>
#include <tuple>using namespace sdbusplus;template<class T, class... Args>
std::tuple<int, std::string> dbusCall(const std::string& service, const std::string& obj, const std::string& interFace, const std::string& method, T& t, Args... args)
{std::string errMsg = "ok";int ret = 0;boost::asio::io_context io;auto conn = make_shared<sdbusplus::asio::connection>(io);auto methodCall = conn->new_method_call(service.c_str(), obj.c_str(), interFace.c_str(), method.c_str());if(sizeof...(args) > 0){methodCall.append(args...);}t