summaryrefslogtreecommitdiff
path: root/gio/src/dbusconnection.ccg
diff options
context:
space:
mode:
authorMurray Cumming <murrayc@murrayc.com>2012-09-16 13:55:18 +0200
committerMurray Cumming <murrayc@murrayc.com>2012-09-16 13:58:30 +0200
commitedca3b3b3da20baf9d79b4820a02bc15a08c207f (patch)
tree7b3a932e264c0bd013b15fa6d0bff0f42a8bdd47 /gio/src/dbusconnection.ccg
parent3990fbe43137ab174503140d922d5aed19432093 (diff)
downloadglibmm-edca3b3b3da20baf9d79b4820a02bc15a08c207f.tar.gz
Gio::DBus::Connection: Add
* gio/src/dbusconnection.[hg|ccg]: Add call(), call_with_unix_fd_finish(), and call_finishcall_sync() method overloads that wrap g_dbus_connection_call_with_unix_fd_list(), g_dbus_connection_call_with_unix_fd_list_finish() and g_dbus_connection_call_with_unix_fd_list_sync() * tools/m4/convert_gio.m4: Add a necessary conversion.
Diffstat (limited to 'gio/src/dbusconnection.ccg')
-rw-r--r--gio/src/dbusconnection.ccg70
1 files changed, 62 insertions, 8 deletions
diff --git a/gio/src/dbusconnection.ccg b/gio/src/dbusconnection.ccg
index 930097e0..5ae3ef41 100644
--- a/gio/src/dbusconnection.ccg
+++ b/gio/src/dbusconnection.ccg
@@ -725,9 +725,6 @@ Glib::VariantContainerBase Connection::call_sync(
return Glib::VariantContainerBase(gvariant, false); //Dont' take an extra reference.
}
-//TODO: Re-add the following two methods when the call_finish() method with a
-//UnixFDList exists.
-#if 0
#ifdef G_OS_LINUX
// With a UnixFDList.
void Connection::call(
@@ -741,8 +738,7 @@ void Connection::call(
const Glib::ustring& bus_name,
int timeout_msec,
CallFlags flags,
- const Glib::VariantType& reply_type
-)
+ const Glib::VariantType& reply_type)
{
// Create a copy of the slot.
// A pointer to it will be passed through the callback's data parameter
@@ -767,8 +763,7 @@ void Connection::call(
const Glib::ustring& bus_name,
int timeout_msec,
CallFlags flags,
- const Glib::VariantType& reply_type
-)
+ const Glib::VariantType& reply_type)
{
// Create a copy of the slot.
// A pointer to it will be passed through the callback's data parameter
@@ -782,7 +777,6 @@ void Connection::call(
0, &SignalProxy_async_callback, slot_copy);
}
#endif // G_OS_LINUX
-#endif // 0
void Connection::emit_signal(
const Glib::ustring& object_path,
@@ -884,6 +878,66 @@ guint Connection::register_subtree(const Glib::ustring& object_path,
return result;
}
+
+Glib::VariantContainerBase Connection::call_sync(const Glib::ustring& object_path, const Glib::ustring& interface_name, const Glib::ustring& method_name, const Glib::VariantContainerBase& parameters, const Glib::RefPtr<Cancellable>& cancellable, const Glib::RefPtr<UnixFDList>& fd_list, Glib::RefPtr<UnixFDList>& out_fd_list, const Glib::ustring& bus_name, int timeout_msec, CallFlags flags, const Glib::VariantType& reply_type)
+{
+ GError* gerror = 0;
+ GUnixFDList* cunixfdlist = 0;
+ Glib::VariantContainerBase retvalue = Glib::VariantContainerBase(g_dbus_connection_call_with_unix_fd_list_sync(gobj(), bus_name.c_str(), object_path.c_str(), interface_name.c_str(), method_name.c_str(), const_cast<GVariant*>((parameters).gobj()), (reply_type).gobj(), ((GDBusCallFlags)(flags)), timeout_msec, Glib::unwrap(fd_list), &cunixfdlist, const_cast<GCancellable*>(Glib::unwrap(cancellable)), &(gerror)), false);
+
+ if(cunixfdlist)
+ out_fd_list = Glib::wrap(cunixfdlist);
+
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+
+ return retvalue;
+
+}
+
+Glib::VariantContainerBase Connection::call_sync(const Glib::ustring& object_path, const Glib::ustring& interface_name, const Glib::ustring& method_name, const Glib::VariantContainerBase& parameters, const Glib::RefPtr<UnixFDList>& fd_list, Glib::RefPtr<UnixFDList>& out_fd_list, const Glib::ustring& bus_name, int timeout_msec, CallFlags flags, const Glib::VariantType& reply_type)
+{
+ GError* gerror = 0;
+ GUnixFDList* cunixfdlist = 0;
+ Glib::VariantContainerBase retvalue = Glib::VariantContainerBase(g_dbus_connection_call_with_unix_fd_list_sync(gobj(), bus_name.c_str(), object_path.c_str(), interface_name.c_str(), method_name.c_str(), const_cast<GVariant*>((parameters).gobj()), (reply_type).gobj(), ((GDBusCallFlags)(flags)), timeout_msec, Glib::unwrap(fd_list), &cunixfdlist, 0, &(gerror)), false);
+
+ if(cunixfdlist)
+ out_fd_list = Glib::wrap(cunixfdlist);
+
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+
+ return retvalue;
+
+}
+
+Glib::VariantContainerBase Connection::call_with_unix_fd_finish(const Glib::RefPtr<AsyncResult>& res, Glib::RefPtr<UnixFDList>& out_fd_list)
+{
+ GError* gerror = 0;
+ GUnixFDList* cunixfdlist = 0;
+ Glib::VariantContainerBase retvalue = Glib::VariantContainerBase(g_dbus_connection_call_with_unix_fd_list_finish(gobj(), &cunixfdlist, Glib::unwrap(res), &(gerror)), false);
+
+ if(cunixfdlist)
+ out_fd_list = Glib::wrap(cunixfdlist);
+
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+
+
+ return retvalue;
+}
+
+Glib::VariantContainerBase Connection::call_with_unix_fd_finish(const Glib::RefPtr<AsyncResult>& res)
+{
+ GError* gerror = 0;
+ Glib::VariantContainerBase retvalue = Glib::VariantContainerBase(g_dbus_connection_call_with_unix_fd_list_finish(gobj(), 0, Glib::unwrap(res), &(gerror)), false);
+
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+
+ return retvalue;
+}
+
} //namespace DBus
} // namespace Gio