diff options
author | Gian Mario Tagliaretti <gianmt@gnome.org> | 2009-12-28 22:41:54 +0100 |
---|---|---|
committer | Gian Mario Tagliaretti <gianmt@gnome.org> | 2009-12-28 22:41:54 +0100 |
commit | b90c01cff5ff5cb2796182f2ffd7b5248eaeed6a (patch) | |
tree | 00dbed6dce93cefa5bfd9875aae223c8837f7573 | |
parent | 0bff01bcee73a0e0d18342331136119c4e8bf151 (diff) | |
download | pygobject-b90c01cff5ff5cb2796182f2ffd7b5248eaeed6a.tar.gz pygobject-b90c01cff5ff5cb2796182f2ffd7b5248eaeed6a.tar.xz pygobject-b90c01cff5ff5cb2796182f2ffd7b5248eaeed6a.zip |
Wrap GIOStream.close_async() and add a test
-rw-r--r-- | gio/Makefile.am | 1 | ||||
-rw-r--r-- | gio/gio.override | 1 | ||||
-rw-r--r-- | gio/giostream.override | 68 | ||||
-rw-r--r-- | tests/test_gio.py | 21 |
4 files changed, 91 insertions, 0 deletions
diff --git a/gio/Makefile.am b/gio/Makefile.am index c91219a..ae2c2b3 100644 --- a/gio/Makefile.am +++ b/gio/Makefile.am @@ -48,6 +48,7 @@ GIO_OVERRIDES = \ gfileinputstream.override \ gfileoutputstream.override \ gicon.override \ + giostream.override \ ginputstream.override \ gmemoryinputstream.override \ gmemoryoutputstream.override \ diff --git a/gio/gio.override b/gio/gio.override index aee6926..172395b 100644 --- a/gio/gio.override +++ b/gio/gio.override @@ -240,6 +240,7 @@ include gfileinputstream.override gfileoutputstream.override gicon.override + giostream.override gmemoryinputstream.override gmemoryoutputstream.override gmount.override diff --git a/gio/giostream.override b/gio/giostream.override new file mode 100644 index 0000000..29ec801 --- /dev/null +++ b/gio/giostream.override @@ -0,0 +1,68 @@ +/* -*- Mode: C; c-basic-offset: 4 -*- + * pygobject - Python bindings for GObject + * Copyright (C) 2009 Gian Mario Tagliaretti + * + * giostream.override: module overrides for GIOStream + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +%% +override g_io_stream_close_async kwargs +static PyObject * +_wrap_g_io_stream_close_async(PyGObject *self, + PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "callback", "io_priority", "cancellable", + "user_data", NULL }; + int io_priority = G_PRIORITY_DEFAULT; + PyGObject *pycancellable = NULL; + GCancellable *cancellable; + PyGIONotify *notify; + + notify = pygio_notify_new(); + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "O|iOO:IOStream.close_async", + kwlist, + ¬ify->callback, + &io_priority, + &pycancellable, + ¬ify->data)) + goto error; + + if (!pygio_notify_callback_is_valid(notify)) + goto error; + + if (!pygio_check_cancellable(pycancellable, &cancellable)) + goto error; + + pygio_notify_reference_callback(notify); + + g_io_stream_close_async(G_IO_STREAM(self->obj), + io_priority, + cancellable, + (GAsyncReadyCallback)async_result_callback_marshal, + notify); + + Py_INCREF(Py_None); + return Py_None; + + error: + pygio_notify_free(notify); + return NULL; +} diff --git a/tests/test_gio.py b/tests/test_gio.py index fd2edba..49d83e8 100644 --- a/tests/test_gio.py +++ b/tests/test_gio.py @@ -1072,3 +1072,24 @@ class TestBufferedInputStream(unittest.TestCase): loop = glib.MainLoop() loop.run() + +class TestIOStream(unittest.TestCase): + def setUp(self): + self.file = gio.File("file.txt") + self.iofile = self.file.create_readwrite(gio.FILE_CREATE_NONE) + + def tearDown(self): + if os.path.exists('file.txt'): + os.unlink("file.txt") + + def testIOStreamCloseAsync(self): + def callback(stream, result): + try: + self.failUnless(stream.close_finish(result)) + finally: + loop.quit() + + self.iofile.close_async(callback) + + loop = glib.MainLoop() + loop.run() |