diff options
| -rw-r--r-- | gio/gresolver.override | 37 | ||||
| -rw-r--r-- | tests/test_gresolver.py | 13 |
2 files changed, 50 insertions, 0 deletions
diff --git a/gio/gresolver.override b/gio/gresolver.override index 4acd8d8..a94b8a5 100644 --- a/gio/gresolver.override +++ b/gio/gresolver.override @@ -273,3 +273,40 @@ _wrap_g_resolver_lookup_service_async(PyGObject *self, pygio_notify_free(notify); return NULL; } +%% +override g_resolver_lookup_service_finish kwargs +static PyObject * +_wrap_g_resolver_lookup_service_finish(PyGObject *self, + PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "result", NULL }; + PyGObject *result; + GList *targets; + PyObject *ret; + GError *error = NULL; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "O!:gio.Resolver.lookup_service_finish", + kwlist, + &PyGAsyncResult_Type, + &result)) + return NULL; + + targets = g_resolver_lookup_service_finish(G_RESOLVER(self->obj), + G_ASYNC_RESULT(result->obj), + &error); + + if (pyg_error_check(&error)) + return NULL; + + if (targets) { + PYLIST_FROMGLIST(ret, targets, + pyg_boxed_new(G_TYPE_SRV_TARGET, list_item, TRUE, TRUE), + g_resolver_free_targets, NULL); + return ret; + } else { + Py_INCREF(Py_None); + return Py_None; + } +} diff --git a/tests/test_gresolver.py b/tests/test_gresolver.py index 03e79cc..4303f0f 100644 --- a/tests/test_gresolver.py +++ b/tests/test_gresolver.py @@ -50,3 +50,16 @@ class TestResolver(unittest.TestCase): targets = self.resolver.lookup_service("xmpp-client", "tcp", "google.com") self.failUnless(isinstance(targets[0], gio.SrvTarget)) + def test_resolver_lookup_service_async(self): + def callback(resolver, result): + try: + targets = resolver.lookup_service_finish(result) + self.failUnless(isinstance(targets[0], gio.SrvTarget)) + finally: + loop.quit() + + self.resolver.lookup_service_async(callback, "xmpp-client", "tcp", "google.com") + + loop = glib.MainLoop() + loop.run() + |
