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(std::forward<declt