service可以对其property的读写进行控制:
#include
#include
#include
#include using namespace std;int main()
{boost::asio::io_context io;auto conn = std::make_shared(io);conn->request_name("calculate.service");auto server = sdbusplus::asio::object_server(conn);shared_ptr iface = server.add_interface("/calculate_obj","calculate_infterface.data");iface->register_property("data", 18, // custom set[](const int& req, int& propertyValue) {cout<<"set property cur="<= 50){cout<<"req="<initialize();io.run();return 0;
}
运行service后,通过busctl进行测试:
busctl get-property calculate.service /calculate_obj calculate_infterface.data data --user
i 18
service侧输出:
get property=18
busctl set-property calculate.service /calculate_obj calculate_infterface.data data i 8 --user
service侧输出:
set property cur=18 req=8
get property=8
busctl set-property calculate.service /calculate_obj calculate_infterface.data data i 88 --user
Failed to set property data on interface calculate_infterface.data: Invalid argument
service侧输出:
set property cur=8 req=88
req=88 is bigger than 50, failed