diff --git a/dnf5daemon-server/dbus/interfaces/org.rpm.dnf.v0.Goal.xml b/dnf5daemon-server/dbus/interfaces/org.rpm.dnf.v0.Goal.xml index ab142e21f..f1ba08953 100644 --- a/dnf5daemon-server/dbus/interfaces/org.rpm.dnf.v0.Goal.xml +++ b/dnf5daemon-server/dbus/interfaces/org.rpm.dnf.v0.Goal.xml @@ -106,6 +106,13 @@ along with libdnf. If not, see . + + + + diff --git a/dnf5daemon-server/services/goal/goal.cpp b/dnf5daemon-server/services/goal/goal.cpp index 0052441b8..3aa1c6a7d 100644 --- a/dnf5daemon-server/services/goal/goal.cpp +++ b/dnf5daemon-server/services/goal/goal.cpp @@ -114,6 +114,10 @@ void Goal::dbus_register() { [this](sdbus::MethodCall call) -> void { session.get_threads_manager().handle_method(*this, &Goal::cancel, call, session.session_locale); }); + dbus_object->registerMethod( + dnfdaemon::INTERFACE_GOAL, "reset", "", {}, "", {}, [this](sdbus::MethodCall call) -> void { + session.get_threads_manager().handle_method(*this, &Goal::reset, call, session.session_locale); + }); } sdbus::MethodReply Goal::resolve(sdbus::MethodCall & call) { @@ -346,3 +350,9 @@ sdbus::MethodReply Goal::cancel(sdbus::MethodCall & call) { reply << error_msg; return reply; } + +sdbus::MethodReply Goal::reset(sdbus::MethodCall & call) { + session.reset_goal(); + auto reply = call.createReply(); + return reply; +} diff --git a/dnf5daemon-server/services/goal/goal.hpp b/dnf5daemon-server/services/goal/goal.hpp index d19b6001e..bbf3d9086 100644 --- a/dnf5daemon-server/services/goal/goal.hpp +++ b/dnf5daemon-server/services/goal/goal.hpp @@ -37,6 +37,7 @@ class Goal : public IDbusSessionService { sdbus::MethodReply get_transaction_problems(sdbus::MethodCall & call); sdbus::MethodReply do_transaction(sdbus::MethodCall & call); sdbus::MethodReply cancel(sdbus::MethodCall & call); + sdbus::MethodReply reset(sdbus::MethodCall & call); }; #endif