mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-07-28 21:03:29 +02:00
build
debian
docs
gio
fam
fen
gvdb
inotify
libasyncns
tests
schema-tests
.gitignore
Makefile.am
appinfo-test.c
appinfo-test.desktop
appinfo.c
application.c
async-close-output-stream.c
buffered-input-stream.c
contexts.c
converter-stream.c
data-input-stream.c
data-output-stream.c
de.po
desktop-app-info.c
echo-server.c
filter-cat.c
filter-streams.c
g-file-info.c
g-file.c
g-icon.c
gdbus-addresses.c
gdbus-connection.c
gdbus-error.c
gdbus-example-export.c
gdbus-example-own-name.c
gdbus-example-peer.c
gdbus-example-proxy-subclass.c
gdbus-example-server.c
gdbus-example-subtree.c
gdbus-example-unix-fd-client.c
gdbus-example-watch-name.c
gdbus-example-watch-proxy.c
gdbus-exit-on-close.c
gdbus-export.c
gdbus-introspection.c
gdbus-names.c
gdbus-peer.c
gdbus-proxy-well-known-name.c
gdbus-proxy.c
gdbus-serialization.c
gdbus-sessionbus.c
gdbus-sessionbus.h
gdbus-tests.c
gdbus-tests.h
gdbus-testserver.py
gdbus-threading.c
gschema-compile.c
gsettings.c
httpd.c
live-g-file.c
live-g-file.txt
memory-input-stream.c
memory-output-stream.c
org.gtk.test.gschema
org.gtk.test.gschema.xml
readwrite.c
resolver.c
send-data.c
simple-async-result.c
sleepy-stream.c
socket-client.c
socket-common.c
socket-server.c
srvtarget.c
testapp.c
testapps.c
unix-fd.c
unix-streams.c
win32-streams.c
win32
xdgmime
.gitignore
ChangeLog
Makefile.am
abicheck.sh
gappinfo.c
gappinfo.h
gapplication.c
gapplication.h
gasynchelper.c
gasynchelper.h
gasyncinitable.c
gasyncinitable.h
gasyncresult.c
gasyncresult.h
gbufferedinputstream.c
gbufferedinputstream.h
gbufferedoutputstream.c
gbufferedoutputstream.h
gcancellable.c
gcancellable.h
gcharsetconverter.c
gcharsetconverter.h
gcontenttype.c
gcontenttype.h
gcontenttypeprivate.h
gconverter.c
gconverter.h
gconverterinputstream.c
gconverterinputstream.h
gconverteroutputstream.c
gconverteroutputstream.h
gcredentials.c
gcredentials.h
gdatainputstream.c
gdatainputstream.h
gdataoutputstream.c
gdataoutputstream.h
gdbus-bash-completion.sh
gdbus-tool.c
gdbusaddress.c
gdbusaddress.h
gdbusapplication.c
gdbusauth.c
gdbusauth.h
gdbusauthmechanism.c
gdbusauthmechanism.h
gdbusauthmechanismanon.c
gdbusauthmechanismanon.h
gdbusauthmechanismexternal.c
gdbusauthmechanismexternal.h
gdbusauthmechanismsha1.c
gdbusauthmechanismsha1.h
gdbusauthobserver.c
gdbusauthobserver.h
gdbusconnection.c
gdbusconnection.h
gdbuserror.c
gdbuserror.h
gdbusintrospection.c
gdbusintrospection.h
gdbusmessage.c
gdbusmessage.h
gdbusmethodinvocation.c
gdbusmethodinvocation.h
gdbusnameowning.c
gdbusnameowning.h
gdbusnamewatching.c
gdbusnamewatching.h
gdbusprivate.c
gdbusprivate.h
gdbusproxy.c
gdbusproxy.h
gdbusserver.c
gdbusserver.h
gdbusutils.c
gdbusutils.h
gdelayedsettingsbackend.c
gdelayedsettingsbackend.h
gdesktopappinfo.c
gdesktopappinfo.h
gdrive.c
gdrive.h
gdummyfile.c
gdummyfile.h
gemblem.c
gemblem.h
gemblemedicon.c
gemblemedicon.h
gfile.c
gfile.h
gfileattribute-priv.h
gfileattribute.c
gfileattribute.h
gfiledescriptorbased.c
gfiledescriptorbased.h
gfileenumerator.c
gfileenumerator.h
gfileicon.c
gfileicon.h
gfileinfo-priv.h
gfileinfo.c
gfileinfo.h
gfileinputstream.c
gfileinputstream.h
gfileiostream.c
gfileiostream.h
gfilemonitor.c
gfilemonitor.h
gfilenamecompleter.c
gfilenamecompleter.h
gfileoutputstream.c
gfileoutputstream.h
gfilterinputstream.c
gfilterinputstream.h
gfilteroutputstream.c
gfilteroutputstream.h
gicon.c
gicon.h
ginetaddress.c
ginetaddress.h
ginetsocketaddress.c
ginetsocketaddress.h
ginitable.c
ginitable.h
ginputstream.c
ginputstream.h
gio-marshal.list
gio-querymodules.c
gio.h
gio.rc.in
gio.symbols
gioenums.h
gioenumtypes.c.template
gioenumtypes.h.template
gioerror.c
gioerror.h
giomodule-priv.h
giomodule.c
giomodule.h
gioscheduler.c
gioscheduler.h
giostream.c
giostream.h
giotypes.h
gkeyfilesettingsbackend.c
gkeyfilesettingsbackend.h
gloadableicon.c
gloadableicon.h
glocaldirectorymonitor.c
glocaldirectorymonitor.h
glocalfile.c
glocalfile.h
glocalfileenumerator.c
glocalfileenumerator.h
glocalfileinfo.c
glocalfileinfo.h
glocalfileinputstream.c
glocalfileinputstream.h
glocalfileiostream.c
glocalfileiostream.h
glocalfilemonitor.c
glocalfilemonitor.h
glocalfileoutputstream.c
glocalfileoutputstream.h
glocalvfs.c
glocalvfs.h
gmemoryinputstream.c
gmemoryinputstream.h
gmemoryoutputstream.c
gmemoryoutputstream.h
gmemorysettingsbackend.c
gmemorysettingsbackend.h
gmount.c
gmount.h
gmountoperation.c
gmountoperation.h
gmountprivate.h
gnativevolumemonitor.c
gnativevolumemonitor.h
gnetworkaddress.c
gnetworkaddress.h
gnetworkingprivate.h
gnetworkservice.c
gnetworkservice.h
gnullapplication.c
gnullsettingsbackend.c
gnullsettingsbackend.h
goutputstream.c
goutputstream.h
gpermission.c
gpermission.h
gpollfilemonitor.c
gpollfilemonitor.h
gresolver.c
gresolver.h
gschema-compile.c
gschema.dtd
gseekable.c
gseekable.h
gsettings-mapping.c
gsettings-mapping.h
gsettings-schema-convert
gsettings-tool.c
gsettings.c
gsettings.h
gsettingsbackend.c
gsettingsbackend.h
gsettingsbackendinternal.h
gsettingsschema.c
gsettingsschema.h
gsimpleasyncresult.c
gsimpleasyncresult.h
gsimplepermission.c
gsimplepermission.h
gsocket.c
gsocket.h
gsocketaddress.c
gsocketaddress.h
gsocketaddressenumerator.c
gsocketaddressenumerator.h
gsocketclient.c
gsocketclient.h
gsocketconnectable.c
gsocketconnectable.h
gsocketconnection.c
gsocketconnection.h
gsocketcontrolmessage.c
gsocketcontrolmessage.h
gsocketinputstream.c
gsocketinputstream.h
gsocketlistener.c
gsocketlistener.h
gsocketoutputstream.c
gsocketoutputstream.h
gsocketservice.c
gsocketservice.h
gsrvtarget.c
gsrvtarget.h
gtcpconnection.c
gtcpconnection.h
gthemedicon.c
gthemedicon.h
gthreadedresolver.c
gthreadedresolver.h
gthreadedsocketservice.c
gthreadedsocketservice.h
gunionvolumemonitor.c
gunionvolumemonitor.h
gunixconnection.c
gunixconnection.h
gunixcredentialsmessage.c
gunixcredentialsmessage.h
gunixfdlist.c
gunixfdlist.h
gunixfdmessage.c
gunixfdmessage.h
gunixinputstream.c
gunixinputstream.h
gunixmount.c
gunixmount.h
gunixmounts.c
gunixmounts.h
gunixoutputstream.c
gunixoutputstream.h
gunixresolver.c
gunixresolver.h
gunixsocketaddress.c
gunixsocketaddress.h
gunixvolume.c
gunixvolume.h
gunixvolumemonitor.c
gunixvolumemonitor.h
gvfs.c
gvfs.h
gvolume.c
gvolume.h
gvolumemonitor.c
gvolumemonitor.h
gwin32appinfo.c
gwin32appinfo.h
gwin32inputstream.c
gwin32inputstream.h
gwin32mount.c
gwin32mount.h
gwin32outputstream.c
gwin32outputstream.h
gwin32resolver.c
gwin32resolver.h
gwin32volumemonitor.c
gwin32volumemonitor.h
gzlibcompressor.c
gzlibcompressor.h
gzlibdecompressor.c
gzlibdecompressor.h
makefile.msc
makegioalias.pl
pltcheck.sh
glib
gmodule
gobject
gthread
m4macros
po
tests
.gitignore
AUTHORS
COPYING
ChangeLog.pre-1-2
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-14
ChangeLog.pre-2-16
ChangeLog.pre-2-18
ChangeLog.pre-2-2
ChangeLog.pre-2-20
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
HACKING
INSTALL.in
MAINTAINERS
Makefile.am
Makefile.decl
NEWS
NEWS.pre-1-3
README.commits
README.in
README.win32
acglib.m4
acinclude.m4
autogen.sh
config.h.win32.in
configure.in
gio-2.0-uninstalled.pc.in
gio-2.0.pc.in
gio-unix-2.0-uninstalled.pc.in
gio-unix-2.0.pc.in
gio-windows-2.0.pc.in
glib-2.0-uninstalled.pc.in
glib-2.0.pc.in
glib-gettextize.in
glib-zip.in
glibconfig.h.win32.in
gmodule-2.0-uninstalled.pc.in
gmodule-2.0.pc.in
gmodule-export-2.0.pc.in
gmodule-no-export-2.0-uninstalled.pc.in
gmodule-no-export-2.0.pc.in
gobject-2.0-uninstalled.pc.in
gobject-2.0.pc.in
gthread-2.0-uninstalled.pc.in
gthread-2.0.pc.in
makefile.msc
mkinstalldirs
msvc_recommended_pragmas.h
sanity_check
win32-fixup.pl
This is to match g_dbus_connection_new(). This extension allows us to extend GDBusAuthObserver to also be used in client-side authentication in the future (right now it's only used on the server-side).
220 lines
6.0 KiB
C
220 lines
6.0 KiB
C
/* GLib testing framework examples and tests
|
|
*
|
|
* Copyright (C) 2008-2010 Red Hat, Inc.
|
|
*
|
|
* 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 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., 59 Temple Place, Suite 330,
|
|
* Boston, MA 02111-1307, USA.
|
|
*
|
|
* Author: David Zeuthen <davidz@redhat.com>
|
|
*/
|
|
|
|
#include <gio/gio.h>
|
|
#include <unistd.h>
|
|
|
|
#include "gdbus-tests.h"
|
|
|
|
/* ---------------------------------------------------------------------------------------------------- */
|
|
|
|
typedef struct
|
|
{
|
|
GMainLoop *loop;
|
|
gboolean timed_out;
|
|
} PropertyNotifyData;
|
|
|
|
static void
|
|
on_property_notify (GObject *object,
|
|
GParamSpec *pspec,
|
|
gpointer user_data)
|
|
{
|
|
PropertyNotifyData *data = user_data;
|
|
g_main_loop_quit (data->loop);
|
|
}
|
|
|
|
static gboolean
|
|
on_property_notify_timeout (gpointer user_data)
|
|
{
|
|
PropertyNotifyData *data = user_data;
|
|
data->timed_out = TRUE;
|
|
g_main_loop_quit (data->loop);
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
_g_assert_property_notify_run (gpointer object,
|
|
const gchar *property_name)
|
|
{
|
|
gchar *s;
|
|
gulong handler_id;
|
|
guint timeout_id;
|
|
PropertyNotifyData data;
|
|
|
|
data.loop = g_main_loop_new (NULL, FALSE);
|
|
data.timed_out = FALSE;
|
|
s = g_strdup_printf ("notify::%s", property_name);
|
|
handler_id = g_signal_connect (object,
|
|
s,
|
|
G_CALLBACK (on_property_notify),
|
|
&data);
|
|
g_free (s);
|
|
timeout_id = g_timeout_add (5 * 1000,
|
|
on_property_notify_timeout,
|
|
&data);
|
|
g_main_loop_run (data.loop);
|
|
g_signal_handler_disconnect (object, handler_id);
|
|
g_source_remove (timeout_id);
|
|
g_main_loop_unref (data.loop);
|
|
|
|
return data.timed_out;
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------------------------------- */
|
|
|
|
typedef struct
|
|
{
|
|
GMainLoop *loop;
|
|
gboolean timed_out;
|
|
} SignalReceivedData;
|
|
|
|
static void
|
|
on_signal_received (gpointer user_data)
|
|
{
|
|
SignalReceivedData *data = user_data;
|
|
g_main_loop_quit (data->loop);
|
|
}
|
|
|
|
static gboolean
|
|
on_signal_received_timeout (gpointer user_data)
|
|
{
|
|
SignalReceivedData *data = user_data;
|
|
data->timed_out = TRUE;
|
|
g_main_loop_quit (data->loop);
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
_g_assert_signal_received_run (gpointer object,
|
|
const gchar *signal_name)
|
|
{
|
|
gulong handler_id;
|
|
guint timeout_id;
|
|
SignalReceivedData data;
|
|
|
|
data.loop = g_main_loop_new (NULL, FALSE);
|
|
data.timed_out = FALSE;
|
|
handler_id = g_signal_connect_swapped (object,
|
|
signal_name,
|
|
G_CALLBACK (on_signal_received),
|
|
&data);
|
|
timeout_id = g_timeout_add (5 * 1000,
|
|
on_signal_received_timeout,
|
|
&data);
|
|
g_main_loop_run (data.loop);
|
|
g_signal_handler_disconnect (object, handler_id);
|
|
g_source_remove (timeout_id);
|
|
g_main_loop_unref (data.loop);
|
|
|
|
return data.timed_out;
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------------------------------- */
|
|
|
|
GDBusConnection *
|
|
_g_bus_get_priv (GBusType bus_type,
|
|
GCancellable *cancellable,
|
|
GError **error)
|
|
{
|
|
gchar *address;
|
|
GDBusConnection *ret;
|
|
|
|
ret = NULL;
|
|
|
|
address = g_dbus_address_get_for_bus_sync (bus_type, cancellable, error);
|
|
if (address == NULL)
|
|
goto out;
|
|
|
|
ret = g_dbus_connection_new_for_address_sync (address,
|
|
G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT |
|
|
G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION,
|
|
NULL, /* GDBusAuthObserver */
|
|
cancellable,
|
|
error);
|
|
g_free (address);
|
|
|
|
out:
|
|
return ret;
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------------------------------- */
|
|
|
|
typedef struct
|
|
{
|
|
GMainLoop *loop;
|
|
gboolean timed_out;
|
|
} WaitSingleRefData;
|
|
|
|
static gboolean
|
|
on_wait_single_ref_timeout (gpointer user_data)
|
|
{
|
|
WaitSingleRefData *data = user_data;
|
|
data->timed_out = TRUE;
|
|
g_main_loop_quit (data->loop);
|
|
return TRUE;
|
|
}
|
|
|
|
static void
|
|
on_wait_for_single_ref_toggled (gpointer user_data,
|
|
GObject *object,
|
|
gboolean is_last_ref)
|
|
{
|
|
WaitSingleRefData *data = user_data;
|
|
g_main_loop_quit (data->loop);
|
|
}
|
|
|
|
gboolean
|
|
_g_object_wait_for_single_ref_do (gpointer object)
|
|
{
|
|
WaitSingleRefData data;
|
|
guint timeout_id;
|
|
|
|
data.timed_out = FALSE;
|
|
|
|
if (G_OBJECT (object)->ref_count == 1)
|
|
goto out;
|
|
|
|
data.loop = g_main_loop_new (NULL, FALSE);
|
|
timeout_id = g_timeout_add (5 * 1000,
|
|
on_wait_single_ref_timeout,
|
|
&data);
|
|
|
|
g_object_add_toggle_ref (G_OBJECT (object),
|
|
on_wait_for_single_ref_toggled,
|
|
&data);
|
|
g_object_unref (object);
|
|
|
|
g_main_loop_run (data.loop);
|
|
|
|
g_object_ref (object);
|
|
g_object_remove_toggle_ref (object,
|
|
on_wait_for_single_ref_toggled,
|
|
&data);
|
|
|
|
g_source_remove (timeout_id);
|
|
g_main_loop_unref (data.loop);
|
|
out:
|
|
return data.timed_out;
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------------------------------- */
|