35 #define OTBR_LOG_TAG "DBUS"
63 DBusRequest(DBusConnection *aConnection, DBusMessage *aMessage)
64 : mConnection(aConnection)
67 dbus_message_ref(aMessage);
68 dbus_connection_ref(aConnection);
78 : mConnection(nullptr)
118 template <
typename... Args>
void Reply(
const std::tuple<Args...> &aReply)
120 UniqueDBusMessage reply{dbus_message_new_method_return(mMessage)};
127 otbrLogDebug(
"Replied to %s.%s :", dbus_message_get_interface(mMessage), dbus_message_get_member(mMessage));
130 dbus_connection_send(mConnection, reply.get(),
nullptr);
143 template <
typename ResultType =
int>
146 UniqueDBusMessage reply{
nullptr};
148 if (aError == OT_ERROR_NONE)
150 otbrLogInfo(
"Replied to %s.%s with result %s", dbus_message_get_interface(mMessage),
155 otbrLogErr(
"Replied to %s.%s with result %s", dbus_message_get_interface(mMessage),
159 if (aError == OT_ERROR_NONE)
161 reply = UniqueDBusMessage(dbus_message_new_method_return(mMessage));
167 VerifyOrDie(reply !=
nullptr,
"Failed to allocate message");
169 if (aResult.HasValue())
171 DBusMessageIter replyIter;
174 dbus_message_iter_init_append(reply.get(), &replyIter);
175 error = DBusMessageEncode(&replyIter, *aResult);
179 dbus_connection_send(mConnection, reply.get(),
nullptr);
190 dbus_connection_unref(mConnection);
194 dbus_message_unref(mMessage);
203 dbus_message_unref(mMessage);
207 dbus_connection_unref(mConnection);
209 mConnection = aOther.mConnection;
210 mMessage = aOther.mMessage;
211 dbus_message_ref(mMessage);
212 dbus_connection_ref(mConnection);
215 DBusConnection *mConnection;
216 DBusMessage * mMessage;