[gnome-keyring] Move gkr_async code into daemon component
- From: Stefan Walter <stefw src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnome-keyring] Move gkr_async code into daemon component
- Date: Mon, 11 May 2009 21:40:23 -0400 (EDT)
commit 7ee0ec368642c482d5f67e275c54cce815b05b53
Author: Stef Walter <stef memberwebs com>
Date: Sun May 10 15:43:14 2009 +0000
Move gkr_async code into daemon component
That's where it's only used. Update tests to new style.
---
common/Makefile.am | 1 -
common/tests/Makefile.am | 4 +-
configure.in | 2 +
daemon/Makefile.am | 7 +-
daemon/gkr-daemon-dbus.c | 3 +-
daemon/gkr-daemon-io.c | 32 +++---
daemon/gkr-daemon-ops.c | 3 +-
daemon/gkr-daemon.c | 12 +-
daemon/keyrings/tests/Makefile.am | 9 +-
daemon/pkcs11/gkr-pkcs11-auth-ep.c | 6 +-
daemon/pkcs11/gkr-pkcs11-daemon.c | 41 ++++----
daemon/ui/gkr-ask-daemon.c | 17 ++--
daemon/ui/gkr-ask-request.c | 24 +++--
daemon/util/.gitignore | 5 +
daemon/util/Makefile.am | 30 +++++
.../gkr-async.c => daemon/util/gkr-daemon-async.c | 97 +++++++++--------
.../gkr-async.h => daemon/util/gkr-daemon-async.h | 68 ++++++------
daemon/{ => util}/gkr-daemon-util.c | 11 +-
daemon/{ => util}/gkr-daemon-util.h | 0
daemon/util/tests/.gitignore | 6 +
daemon/util/tests/Makefile.am | 11 ++
{common => daemon/util}/tests/unit-test-async.c | 114 +++++++++----------
tests/test-helpers.c | 4 +-
23 files changed, 279 insertions(+), 228 deletions(-)
diff --git a/common/Makefile.am b/common/Makefile.am
index 569c950..de0a6f3 100644
--- a/common/Makefile.am
+++ b/common/Makefile.am
@@ -19,7 +19,6 @@ libgkr_common_la_CFLAGS = \
$(GLIB_CFLAGS)
libgkr_common_la_SOURCES = \
- gkr-async.c gkr-async.h \
gkr-location.c gkr-location.h \
gkr-location-watch.c gkr-location-watch.h
diff --git a/common/tests/Makefile.am b/common/tests/Makefile.am
index 7df5edd..b2d8574 100644
--- a/common/tests/Makefile.am
+++ b/common/tests/Makefile.am
@@ -1,5 +1,4 @@
UNIT_AUTO = \
- unit-test-async.c \
unit-test-location.c \
unit-test-location-watch.c
@@ -10,4 +9,7 @@ UNIT_LIBS = \
$(top_builddir)/egg/libegg-dbus.la \
$(top_builddir)/common/libgkr-common.la
+UNIT_FLAGS = \
+ -DEXTERNAL_TEST
+
include $(top_srcdir)/tests/test.make
diff --git a/configure.in b/configure.in
index a0e1e9a..d795e74 100644
--- a/configure.in
+++ b/configure.in
@@ -550,6 +550,8 @@ daemon/keyrings/Makefile
daemon/keyrings/tests/Makefile
daemon/pkcs11/Makefile
daemon/ui/Makefile
+daemon/util/Makefile
+daemon/util/tests/Makefile
docs/Makefile
docs/reference/Makefile
docs/reference/gcr/Makefile
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index fae4ad0..664f0db 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -1,8 +1,9 @@
SUBDIRS = \
+ util \
ui \
keyrings \
pkcs11 \
- data
+ data
bin_PROGRAMS= \
gnome-keyring-daemon
@@ -24,13 +25,13 @@ gnome_keyring_daemon_SOURCES = \
gkr-daemon.c gkr-daemon.h \
gkr-daemon-dbus.c \
gkr-daemon-io.c \
- gkr-daemon-ops.c \
- gkr-daemon-util.c gkr-daemon-util.h
+ gkr-daemon-ops.c
gnome_keyring_daemon_LDADD = \
$(top_builddir)/daemon/pkcs11/libgkr-pkcs11.la \
$(top_builddir)/daemon/keyrings/libgkr-keyrings.la \
$(top_builddir)/daemon/ui/libgkr-ui.la \
+ $(top_builddir)/daemon/util/libgkr-daemon-util.la \
$(top_builddir)/library/libgnome-keyring-common.la \
$(top_builddir)/pkcs11/plex-layer/libgck-plex-layer.la \
$(top_builddir)/pkcs11/roots-store/libgck-roots-store.la \
diff --git a/daemon/gkr-daemon-dbus.c b/daemon/gkr-daemon-dbus.c
index cec4e51..c0d6f7c 100644
--- a/daemon/gkr-daemon-dbus.c
+++ b/daemon/gkr-daemon-dbus.c
@@ -23,7 +23,6 @@
#include "config.h"
#include "gkr-daemon.h"
-#include "gkr-daemon-util.h"
#include "egg/egg-cleanup.h"
#include "egg/egg-dbus.h"
@@ -31,6 +30,8 @@
#include "library/gnome-keyring.h"
#include "library/gnome-keyring-private.h"
+#include "util/gkr-daemon-util.h"
+
#include <dbus/dbus.h>
#include <string.h>
diff --git a/daemon/gkr-daemon-io.c b/daemon/gkr-daemon-io.c
index beef44a..e499c65 100644
--- a/daemon/gkr-daemon-io.c
+++ b/daemon/gkr-daemon-io.c
@@ -33,9 +33,6 @@
#include <sys/un.h>
#include "gkr-daemon.h"
-#include "gkr-daemon-util.h"
-
-#include "common/gkr-async.h"
#include "egg/egg-buffer.h"
#include "egg/egg-cleanup.h"
@@ -50,6 +47,9 @@
#include "ui/gkr-ask-daemon.h"
+#include "util/gkr-daemon-async.h"
+#include "util/gkr-daemon-util.h"
+
#ifndef HAVE_SOCKLEN_T
#define socklen_t int
#endif
@@ -65,7 +65,7 @@ typedef enum {
} GnomeKeyringClientStates;
typedef struct {
- GkrAsyncWorker *worker;
+ GkrDaemonAsyncWorker *worker;
int sock;
GnomeKeyringApplicationRef *app_ref;
@@ -120,15 +120,15 @@ yield_and_read_all (int fd, guchar *buf, int len)
while (len > 0) {
/* Is this worker stopping? */
- if (gkr_async_is_stopping ())
+ if (gkr_daemon_async_is_stopping ())
return FALSE;
/* Don't block other threads during the read */
- gkr_async_begin_concurrent ();
+ gkr_daemon_async_begin_concurrent ();
res = read (fd, buf, len);
- gkr_async_end_concurrent ();
+ gkr_daemon_async_end_concurrent ();
if (res <= 0) {
if (errno == EAGAIN || errno == EINTR)
@@ -155,15 +155,15 @@ yield_and_write_all (int fd, const guchar *buf, int len)
while (len > 0) {
/* Is this worker stopping? */
- if (gkr_async_is_stopping ())
+ if (gkr_daemon_async_is_stopping ())
return FALSE;
/* Don't block other threads during the read */
- gkr_async_begin_concurrent ();
+ gkr_daemon_async_begin_concurrent ();
res = write (fd, buf, len);
- gkr_async_end_concurrent ();
+ gkr_daemon_async_end_concurrent ();
if (res <= 0) {
if (errno == EAGAIN || errno == EINTR)
@@ -211,11 +211,11 @@ yield_and_read_credentials (int sock, pid_t *pid, uid_t *uid)
{
gboolean ret;
- gkr_async_begin_concurrent ();
+ gkr_daemon_async_begin_concurrent ();
ret = egg_unix_credentials_read (sock, pid, uid) >= 0;
- gkr_async_end_concurrent ();
+ gkr_daemon_async_end_concurrent ();
return ret;
}
@@ -241,7 +241,7 @@ client_worker_main (gpointer user_data)
char *str;
/* This helps any reads wakeup when this worker is stopping */
- gkr_async_register_cancel (close_fd, &client->sock);
+ gkr_daemon_async_register_cancel (close_fd, &client->sock);
/* 1. First we read and verify the client's user credentials */
debug_print (("GNOME_CLIENT_STATE_CREDENTIALS %p\n", client));
@@ -316,7 +316,7 @@ client_worker_main (gpointer user_data)
}
static void
-client_worker_done (GkrAsyncWorker *worker, gpointer result, gpointer user_data)
+client_worker_done (GkrDaemonAsyncWorker *worker, gpointer result, gpointer user_data)
{
GnomeKeyringClient *client = (GnomeKeyringClient*)user_data;
@@ -349,8 +349,8 @@ client_new (int fd)
*/
egg_buffer_init_full (&client->input_buffer, 128, egg_secure_realloc);
- client->worker = gkr_async_worker_start (client_worker_main,
- client_worker_done, client);
+ client->worker = gkr_daemon_async_worker_start (client_worker_main,
+ client_worker_done, client);
g_assert (client->worker);
/*
diff --git a/daemon/gkr-daemon-ops.c b/daemon/gkr-daemon-ops.c
index 68d6647..4d18fca 100644
--- a/daemon/gkr-daemon-ops.c
+++ b/daemon/gkr-daemon-ops.c
@@ -23,7 +23,6 @@
#include "config.h"
#include "gkr-daemon.h"
-#include "gkr-daemon-util.h"
#include "common/gkr-location.h"
@@ -42,6 +41,8 @@
#include "ui/gkr-ask-request.h"
#include "ui/gkr-ask-daemon.h"
+#include "util/gkr-daemon-util.h"
+
#include <unistd.h>
#include <errno.h>
#include <stdlib.h>
diff --git a/daemon/gkr-daemon.c b/daemon/gkr-daemon.c
index b70a4fe..39a8c61 100644
--- a/daemon/gkr-daemon.c
+++ b/daemon/gkr-daemon.c
@@ -23,9 +23,6 @@
#include "config.h"
#include "gkr-daemon.h"
-#include "gkr-daemon-util.h"
-
-#include "common/gkr-async.h"
#include "egg/egg-cleanup.h"
#include "egg/egg-libgcrypt.h"
@@ -41,6 +38,9 @@
#include "ui/gkr-ask-daemon.h"
+#include "util/gkr-daemon-async.h"
+#include "util/gkr-daemon-util.h"
+
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
@@ -717,7 +717,7 @@ main (int argc, char *argv[])
/* Initialize our daemon main loop and threading */
loop = g_main_loop_new (NULL, FALSE);
ctx = g_main_loop_get_context (loop);
- gkr_async_workers_init (loop);
+ gkr_daemon_async_workers_init (loop);
/*
* Always initialize the keyring subsystem. This is a necessary
@@ -765,13 +765,13 @@ main (int argc, char *argv[])
g_main_loop_run (loop);
/* Make sure no other threads are running */
- gkr_async_workers_stop_all ();
+ gkr_daemon_async_workers_stop_all ();
/* This wraps everything up in order */
egg_cleanup_perform ();
/* Final shutdown of anything workers running about */
- gkr_async_workers_uninit ();
+ gkr_daemon_async_workers_uninit ();
return 0;
}
diff --git a/daemon/keyrings/tests/Makefile.am b/daemon/keyrings/tests/Makefile.am
index 16664db..b61a7e7 100644
--- a/daemon/keyrings/tests/Makefile.am
+++ b/daemon/keyrings/tests/Makefile.am
@@ -1,18 +1,15 @@
UNIT_AUTO = \
unit-test-keyring-login.c \
- unit-test-keyring-file.c \
- $(top_srcdir)/daemon/gkr-daemon-util.c \
- $(top_srcdir)/daemon/gkr-daemon-util.h
+ unit-test-keyring-file.c
UNIT_PROMPT = \
- unit-test-login-prompt.c \
- $(top_srcdir)/daemon/gkr-daemon-util.c \
- $(top_srcdir)/daemon/gkr-daemon-util.h
+ unit-test-login-prompt.c
UNIT_LIBS = \
$(top_builddir)/daemon/keyrings/libgkr-keyrings.la \
$(top_builddir)/daemon/ui/libgkr-ui.la \
+ $(top_builddir)/daemon/util/libgkr-daemon-util.la \
$(top_builddir)/library/libgnome-keyring-common.la \
$(top_builddir)/common/libgkr-common.la
diff --git a/daemon/pkcs11/gkr-pkcs11-auth-ep.c b/daemon/pkcs11/gkr-pkcs11-auth-ep.c
index 62e00e3..b68ad9d 100644
--- a/daemon/pkcs11/gkr-pkcs11-auth-ep.c
+++ b/daemon/pkcs11/gkr-pkcs11-auth-ep.c
@@ -23,7 +23,7 @@
#include "gkr-pkcs11-auth.h"
-#include "common/gkr-async.h"
+#include "daemon/util/gkr-daemon-async.h"
#include "pkcs11/pkcs11.h"
#include "pkcs11/pkcs11g.h"
@@ -47,10 +47,10 @@
static CK_FUNCTION_LIST_PTR pkcs11_lower = NULL;
#define DAEMON_ENTER() \
- gkr_async_end_concurrent ()
+ gkr_daemon_async_end_concurrent ()
#define DAEMON_LEAVE() \
- gkr_async_begin_concurrent ()
+ gkr_daemon_async_begin_concurrent ()
/* --------------------------------------------------------------------------------------
* HELPERS
diff --git a/daemon/pkcs11/gkr-pkcs11-daemon.c b/daemon/pkcs11/gkr-pkcs11-daemon.c
index 3b4f1a2..8a213b7 100644
--- a/daemon/pkcs11/gkr-pkcs11-daemon.c
+++ b/daemon/pkcs11/gkr-pkcs11-daemon.c
@@ -31,9 +31,8 @@
#include "pkcs11/ssh-store/gck-ssh-store.h"
#include "pkcs11/user-store/gck-user-store.h"
-#include "common/gkr-async.h"
-
-#include "daemon/gkr-daemon-util.h"
+#include "daemon/util/gkr-daemon-async.h"
+#include "daemon/util/gkr-daemon-util.h"
#include "egg/egg-cleanup.h"
@@ -42,11 +41,11 @@
* must be concurrent. That is must UNLOCK the demon lock,
* perform the call and then relock.
*
- * gkr_async_begin_concurrent ();
+ * gkr_daemon_async_begin_concurrent ();
*
* gck_call_xxxx (xxx);
*
- * gkr_async_end_concurrent ();
+ * gkr_daemon_async_end_concurrent ();
*/
/* The top level of our internal PKCS#11 module stack */
@@ -59,11 +58,11 @@ pkcs11_daemon_cleanup (gpointer unused)
g_assert (pkcs11_roof);
- gkr_async_begin_concurrent ();
+ gkr_daemon_async_begin_concurrent ();
rv = (pkcs11_roof->C_Finalize) (NULL);
- gkr_async_end_concurrent ();
+ gkr_daemon_async_end_concurrent ();
if (rv != CKR_OK)
g_warning ("couldn't finalize internal PKCS#11 stack (code: %d)", (gint)rv);
@@ -81,7 +80,7 @@ gkr_pkcs11_daemon_initialize (void)
CK_RV rv;
/* Now initialize them all */
- gkr_async_begin_concurrent ();
+ gkr_daemon_async_begin_concurrent ();
/* SSH storage */
ssh_store = gck_ssh_store_get_functions ();
@@ -108,7 +107,7 @@ gkr_pkcs11_daemon_initialize (void)
/* Initialize the whole caboodle */
rv = (pkcs11_roof->C_Initialize) (NULL);
- gkr_async_end_concurrent ();
+ gkr_daemon_async_end_concurrent ();
if (rv != CKR_OK) {
g_warning ("couldn't initialize internal PKCS#11 stack (code: %d)", (gint)rv);
@@ -122,22 +121,22 @@ gkr_pkcs11_daemon_initialize (void)
static void
pkcs11_rpc_cleanup (gpointer unused)
{
- gkr_async_begin_concurrent ();
+ gkr_daemon_async_begin_concurrent ();
gck_rpc_layer_uninitialize ();
- gkr_async_end_concurrent ();
+ gkr_daemon_async_end_concurrent ();
}
static gboolean
accept_rpc_client (GIOChannel *channel, GIOCondition cond, gpointer unused)
{
- gkr_async_begin_concurrent ();
+ gkr_daemon_async_begin_concurrent ();
if (cond == G_IO_IN)
gck_rpc_layer_accept ();
- gkr_async_end_concurrent ();
+ gkr_daemon_async_end_concurrent ();
return TRUE;
}
@@ -154,11 +153,11 @@ gkr_pkcs11_daemon_setup_pkcs11 (void)
base_dir = gkr_daemon_util_get_master_directory ();
g_return_val_if_fail (base_dir, FALSE);
- gkr_async_begin_concurrent ();
+ gkr_daemon_async_begin_concurrent ();
sock = gck_rpc_layer_initialize (base_dir, pkcs11_roof);
- gkr_async_end_concurrent ();
+ gkr_daemon_async_end_concurrent ();
if (sock == -1)
return FALSE;
@@ -175,22 +174,22 @@ gkr_pkcs11_daemon_setup_pkcs11 (void)
static void
pkcs11_ssh_cleanup (gpointer unused)
{
- gkr_async_begin_concurrent ();
+ gkr_daemon_async_begin_concurrent ();
gck_ssh_agent_uninitialize ();
- gkr_async_end_concurrent ();
+ gkr_daemon_async_end_concurrent ();
}
static gboolean
accept_ssh_client (GIOChannel *channel, GIOCondition cond, gpointer unused)
{
- gkr_async_begin_concurrent ();
+ gkr_daemon_async_begin_concurrent ();
if (cond == G_IO_IN)
gck_ssh_agent_accept ();
- gkr_async_end_concurrent ();
+ gkr_daemon_async_end_concurrent ();
return TRUE;
}
@@ -207,11 +206,11 @@ gkr_pkcs11_daemon_setup_ssh (void)
base_dir = gkr_daemon_util_get_master_directory ();
g_return_val_if_fail (base_dir, FALSE);
- gkr_async_begin_concurrent ();
+ gkr_daemon_async_begin_concurrent ();
sock = gck_ssh_agent_initialize (base_dir, pkcs11_roof);
- gkr_async_end_concurrent ();
+ gkr_daemon_async_end_concurrent ();
if (sock == -1)
return FALSE;
diff --git a/daemon/ui/gkr-ask-daemon.c b/daemon/ui/gkr-ask-daemon.c
index 94b09b4..f0bfba3 100644
--- a/daemon/ui/gkr-ask-daemon.c
+++ b/daemon/ui/gkr-ask-daemon.c
@@ -26,9 +26,8 @@
#include "gkr-ask-daemon.h"
#include "gkr-ask-request.h"
-#include "common/gkr-async.h"
-
-#include "daemon/gkr-daemon-util.h"
+#include "daemon/util/gkr-daemon-async.h"
+#include "daemon/util/gkr-daemon-util.h"
#include "egg/egg-cleanup.h"
@@ -36,7 +35,7 @@
static gboolean ask_daemon_inited = FALSE;
-static GkrAsyncWait *wait_condition = NULL;
+static GkrDaemonAsyncWait *wait_condition = NULL;
static GkrAskRequest *current_ask = NULL;
static GkrAskHook ask_daemon_hook = NULL;
@@ -51,7 +50,7 @@ ask_daemon_cleanup (gpointer unused)
gkr_ask_request_cancel (current_ask);
g_assert (wait_condition);
- gkr_async_wait_free (wait_condition);
+ gkr_daemon_async_wait_free (wait_condition);
wait_condition = NULL;
ask_daemon_inited = FALSE;
@@ -64,7 +63,7 @@ ask_daemon_init (void)
return;
ask_daemon_inited = TRUE;
- wait_condition = gkr_async_wait_new ();
+ wait_condition = gkr_daemon_async_wait_new ();
egg_cleanup_register (ask_daemon_cleanup, NULL);
}
@@ -138,14 +137,14 @@ gkr_ask_daemon_process (GkrAskRequest* ask)
if (gkr_ask_request_check (ask))
goto done;
- if (gkr_async_is_stopping ()) {
+ if (gkr_daemon_async_is_stopping ()) {
gkr_ask_request_cancel (ask);
goto done;
}
/* Wait until no other asks are prompting */
while (current_ask)
- gkr_async_wait (wait_condition);
+ gkr_daemon_async_wait (wait_condition);
/*
* See if the user already denied this request.
@@ -180,7 +179,7 @@ gkr_ask_daemon_process (GkrAskRequest* ask)
current_ask = NULL;
g_assert (wait_condition);
- gkr_async_notify (wait_condition);
+ gkr_daemon_async_notify (wait_condition);
done:
g_assert (gkr_ask_request_is_complete (ask));
diff --git a/daemon/ui/gkr-ask-request.c b/daemon/ui/gkr-ask-request.c
index 7343985..6ee6043 100644
--- a/daemon/ui/gkr-ask-request.c
+++ b/daemon/ui/gkr-ask-request.c
@@ -28,8 +28,10 @@
#include "gkr-ask-marshal.h"
#include "gkr-ask-daemon.h"
-#include "common/gkr-async.h"
#include "common/gkr-location.h"
+
+#include "daemon/util/gkr-daemon-async.h"
+
#include "egg/egg-secure-memory.h"
#include "library/gnome-keyring.h"
@@ -501,16 +503,16 @@ read_until_end (GkrAskRequest *ask)
/* Passwords come through this buffer */
buf = egg_secure_alloc (128);
- gkr_async_register_cancel (close_fd, &pv->out_fd);
+ gkr_daemon_async_register_cancel (close_fd, &pv->out_fd);
for (;;) {
- if (gkr_async_is_stopping ())
+ if (gkr_daemon_async_is_stopping ())
break;
- gkr_async_begin_concurrent ();
+ gkr_daemon_async_begin_concurrent ();
res = read (pv->out_fd, buf, 128);
- gkr_async_end_concurrent ();
+ gkr_daemon_async_end_concurrent ();
/* Got an error */
if (res < 0) {
@@ -534,7 +536,7 @@ read_until_end (GkrAskRequest *ask)
egg_buffer_add_byte (&pv->buffer, 0);
egg_secure_free (buf);
- gkr_async_unregister_cancel (close_fd, &pv->out_fd);
+ gkr_daemon_async_unregister_cancel (close_fd, &pv->out_fd);
close_fd (&pv->out_fd);
@@ -596,16 +598,16 @@ send_all_data (GkrAskRequest *ask, const gchar *buf, gsize len)
g_return_val_if_fail (pv->in_fd >= 0, FALSE);
- gkr_async_register_cancel (close_fd, &pv->in_fd);
+ gkr_daemon_async_register_cancel (close_fd, &pv->in_fd);
while (len > 0) {
- if (gkr_async_is_stopping ())
+ if (gkr_daemon_async_is_stopping ())
break;
- gkr_async_begin_concurrent ();
+ gkr_daemon_async_begin_concurrent ();
res = write (pv->in_fd, buf, len);
- gkr_async_end_concurrent ();
+ gkr_daemon_async_end_concurrent ();
/* Got an error */
if (res < 0) {
@@ -629,7 +631,7 @@ send_all_data (GkrAskRequest *ask, const gchar *buf, gsize len)
if (len == 0)
ret = TRUE;
- gkr_async_unregister_cancel (close_fd, &pv->in_fd);
+ gkr_daemon_async_unregister_cancel (close_fd, &pv->in_fd);
close_fd (&pv->in_fd);
return ret;
diff --git a/daemon/util/.gitignore b/daemon/util/.gitignore
new file mode 100644
index 0000000..60d0f67
--- /dev/null
+++ b/daemon/util/.gitignore
@@ -0,0 +1,5 @@
+.deps
+.libs
+Makefile
+Makefile.in
+
diff --git a/daemon/util/Makefile.am b/daemon/util/Makefile.am
new file mode 100644
index 0000000..0c904d1
--- /dev/null
+++ b/daemon/util/Makefile.am
@@ -0,0 +1,30 @@
+
+noinst_LTLIBRARIES=libgkr-daemon-util.la
+
+INCLUDES= \
+ -DPREFIX=\""$(prefix)"\" \
+ -DBINDIR=\""$(bindir)"\" \
+ -DLIBEXECDIR=\""$(libexecdir)"\" \
+ -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/daemon \
+ -I$(top_builddir) \
+ $(DAEMON_CFLAGS) \
+ $(GOBJECT_CFLAGS) \
+ $(GLIB_CFLAGS)
+
+libgkr_daemon_util_la_SOURCES = \
+ gkr-daemon-async.c gkr-daemon-async.h \
+ gkr-daemon-util.c gkr-daemon-util.h
+
+libgkr_daemon_util_la_LIBADD = \
+ $(GLIB_LIBS) \
+ $(GOBJECT_LIBS)
+
+if WITH_TESTS
+TESTS_DIR = tests
+else
+TESTS_DIR =
+endif
+
+SUBDIRS = . $(TESTS_DIR)
diff --git a/common/gkr-async.c b/daemon/util/gkr-daemon-async.c
similarity index 84%
rename from common/gkr-async.c
rename to daemon/util/gkr-daemon-async.c
index 401bbe9..c80886a 100644
--- a/common/gkr-async.c
+++ b/daemon/util/gkr-daemon-async.c
@@ -1,5 +1,5 @@
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-async.c - some daemon async functionality
+/* gkr-daemon-async.c - some daemon async functionality
Copyright (C) 2007, Nate Nielsen
@@ -22,7 +22,7 @@
*/
-#include "gkr-async.h"
+#include "gkr-daemon-async.h"
#include <glib.h>
@@ -154,10 +154,13 @@ static GSourceFuncs async_source_functions = {
};
void
-gkr_async_workers_init (GMainLoop *mainloop)
+gkr_daemon_async_workers_init (GMainLoop *mainloop)
{
GSource *src;
+ if (main_ctx)
+ return;
+
g_assert (mainloop);
async_mutex = g_mutex_new ();
@@ -186,11 +189,11 @@ gkr_async_workers_init (GMainLoop *mainloop)
}
void
-gkr_async_workers_uninit (void)
+gkr_daemon_async_workers_uninit (void)
{
GSource* src;
- gkr_async_workers_stop_all ();
+ gkr_daemon_async_workers_stop_all ();
DO_UNLOCK (async_mutex);
@@ -224,11 +227,11 @@ typedef struct _GkrCancelCallback {
gpointer user_data;
} GkrCancelCallback;
-struct _GkrAsyncWorker {
+struct _GkrDaemonAsyncWorker {
GThread *thread;
GThreadFunc func;
- GkrAsyncWorkerCallback callback;
+ GkrDaemonAsyncWorkerCallback callback;
GQueue *cancel_funcs;
/* The current status */
@@ -242,7 +245,7 @@ struct _GkrAsyncWorker {
static gpointer
async_worker_thread (gpointer data)
{
- GkrAsyncWorker *worker = (GkrAsyncWorker*)data;
+ GkrDaemonAsyncWorker *worker = (GkrDaemonAsyncWorker*)data;
gpointer result;
g_assert (worker);
@@ -281,7 +284,7 @@ async_worker_thread (gpointer data)
static gboolean
cleanup_done_thread (gpointer message, gpointer data)
{
- GkrAsyncWorker *worker = (GkrAsyncWorker*)message;
+ GkrDaemonAsyncWorker *worker = (GkrDaemonAsyncWorker*)message;
GkrCancelCallback *cb;
gpointer result;
@@ -337,11 +340,11 @@ cleanup_done_threads (void)
}
}
-GkrAsyncWorker*
-gkr_async_worker_start (GThreadFunc func, GkrAsyncWorkerCallback callback,
- gpointer user_data)
+GkrDaemonAsyncWorker*
+gkr_daemon_async_worker_start (GThreadFunc func, GkrDaemonAsyncWorkerCallback callback,
+ gpointer user_data)
{
- GkrAsyncWorker *worker;
+ GkrDaemonAsyncWorker *worker;
GError *err = NULL;
ASSERT_IS_MAIN ();
@@ -354,7 +357,7 @@ gkr_async_worker_start (GThreadFunc func, GkrAsyncWorkerCallback callback,
running_workers = g_hash_table_new (g_direct_hash, g_direct_equal);
}
- worker = g_new0 (GkrAsyncWorker, 1);
+ worker = g_new0 (GkrDaemonAsyncWorker, 1);
worker->func = func;
worker->callback = callback;
worker->cancel_funcs = g_queue_new ();
@@ -379,11 +382,11 @@ gkr_async_worker_start (GThreadFunc func, GkrAsyncWorkerCallback callback,
}
void
-gkr_async_worker_cancel (GkrAsyncWorker *worker)
+gkr_daemon_async_worker_cancel (GkrDaemonAsyncWorker *worker)
{
GkrCancelCallback *cb;
- g_assert (gkr_async_worker_is_valid (worker));
+ g_assert (gkr_daemon_async_worker_is_valid (worker));
g_atomic_int_inc (&worker->cancelled);
for (;;) {
@@ -396,25 +399,25 @@ gkr_async_worker_cancel (GkrAsyncWorker *worker)
}
void
-gkr_async_worker_stop (GkrAsyncWorker *worker)
+gkr_daemon_async_worker_stop (GkrDaemonAsyncWorker *worker)
{
- g_assert (gkr_async_worker_is_valid (worker));
+ g_assert (gkr_daemon_async_worker_is_valid (worker));
g_assert (worker);
ASSERT_IS_MAIN ();
- gkr_async_worker_cancel (worker);
+ gkr_daemon_async_worker_cancel (worker);
while (!g_atomic_int_get (&worker->stopped)) {
g_assert (running_workers && g_hash_table_size (running_workers) > 0);
cleanup_done_threads ();
- gkr_async_yield ();
+ gkr_daemon_async_yield ();
}
cleanup_done_threads ();
}
gboolean
-gkr_async_worker_is_valid (GkrAsyncWorker *worker)
+gkr_daemon_async_worker_is_valid (GkrDaemonAsyncWorker *worker)
{
ASSERT_IS_MAIN ();
@@ -423,7 +426,7 @@ gkr_async_worker_is_valid (GkrAsyncWorker *worker)
}
guint
-gkr_async_workers_get_n (void)
+gkr_daemon_async_workers_get_n (void)
{
ASSERT_IS_MAIN ();
@@ -435,11 +438,11 @@ gkr_async_workers_get_n (void)
static void
cancel_each_worker (gpointer key, gpointer value, gpointer data)
{
- gkr_async_worker_cancel ((GkrAsyncWorker*)key);
+ gkr_daemon_async_worker_cancel ((GkrDaemonAsyncWorker*)key);
}
void
-gkr_async_workers_stop_all (void)
+gkr_daemon_async_workers_stop_all (void)
{
ASSERT_IS_MAIN ();
@@ -453,7 +456,7 @@ gkr_async_workers_stop_all (void)
while (running_workers) {
g_assert (g_hash_table_size (running_workers) > 0);
cleanup_done_threads ();
- gkr_async_yield ();
+ gkr_daemon_async_yield ();
}
}
@@ -462,13 +465,13 @@ gkr_async_workers_stop_all (void)
*/
gboolean
-gkr_async_yield (void)
+gkr_daemon_async_yield (void)
{
- GkrAsyncWorker *worker;
+ GkrDaemonAsyncWorker *worker;
g_assert (async_mutex);
- worker = (GkrAsyncWorker*)g_static_private_get (&thread_private);
+ worker = (GkrDaemonAsyncWorker*)g_static_private_get (&thread_private);
if (worker && g_atomic_int_get (&worker->cancelled))
return FALSE;
@@ -484,11 +487,11 @@ gkr_async_yield (void)
}
gboolean
-gkr_async_is_stopping (void)
+gkr_daemon_async_is_stopping (void)
{
- GkrAsyncWorker *worker;
+ GkrDaemonAsyncWorker *worker;
- worker = (GkrAsyncWorker*)g_static_private_get (&thread_private);
+ worker = (GkrDaemonAsyncWorker*)g_static_private_get (&thread_private);
if (worker && g_atomic_int_get (&worker->cancelled))
return TRUE;
@@ -496,7 +499,7 @@ gkr_async_is_stopping (void)
}
void
-gkr_async_begin_concurrent (void)
+gkr_daemon_async_begin_concurrent (void)
{
g_assert (async_mutex);
@@ -505,7 +508,7 @@ gkr_async_begin_concurrent (void)
}
void
-gkr_async_end_concurrent (void)
+gkr_daemon_async_end_concurrent (void)
{
g_assert (async_mutex);
@@ -514,14 +517,14 @@ gkr_async_end_concurrent (void)
}
void
-gkr_async_register_cancel (GDestroyNotify cancel, gpointer data)
+gkr_daemon_async_register_cancel (GDestroyNotify cancel, gpointer data)
{
GkrCancelCallback *cb;
- GkrAsyncWorker *worker;
+ GkrDaemonAsyncWorker *worker;
g_assert (cancel);
- worker = (GkrAsyncWorker*)g_static_private_get (&thread_private);
+ worker = (GkrDaemonAsyncWorker*)g_static_private_get (&thread_private);
/* We don't support cancellation funcs for main thread */
if (!worker)
@@ -541,15 +544,15 @@ match_cancel_func (gconstpointer a, gconstpointer b)
}
void
-gkr_async_unregister_cancel (GDestroyNotify cancel, gpointer data)
+gkr_daemon_async_unregister_cancel (GDestroyNotify cancel, gpointer data)
{
GkrCancelCallback match;
- GkrAsyncWorker *worker;
+ GkrDaemonAsyncWorker *worker;
GList *l;
g_assert (cancel);
- worker = (GkrAsyncWorker*)g_static_private_get (&thread_private);
+ worker = (GkrDaemonAsyncWorker*)g_static_private_get (&thread_private);
/* We don't support cancellation funcs for main thread */
if (!worker)
@@ -569,14 +572,14 @@ gkr_async_unregister_cancel (GDestroyNotify cancel, gpointer data)
* ASYNC WAITS
*/
-GkrAsyncWait*
-gkr_async_wait_new (void)
+GkrDaemonAsyncWait*
+gkr_daemon_async_wait_new (void)
{
- return (GkrAsyncWait*)g_cond_new ();
+ return (GkrDaemonAsyncWait*)g_cond_new ();
}
void
-gkr_async_wait_free (GkrAsyncWait *wait)
+gkr_daemon_async_wait_free (GkrDaemonAsyncWait *wait)
{
if (!wait)
return;
@@ -584,21 +587,21 @@ gkr_async_wait_free (GkrAsyncWait *wait)
}
void
-gkr_async_wait (GkrAsyncWait *wait)
+gkr_daemon_async_wait (GkrDaemonAsyncWait *wait)
{
g_assert (wait);
g_cond_wait ((GCond*)wait, async_mutex);
}
void
-gkr_async_notify (GkrAsyncWait *wait)
+gkr_daemon_async_notify (GkrDaemonAsyncWait *wait)
{
g_assert (wait);
g_cond_signal ((GCond*)wait);
}
void
-gkr_async_usleep (gulong microseconds)
+gkr_daemon_async_usleep (gulong microseconds)
{
g_assert (async_mutex);
@@ -611,7 +614,7 @@ gkr_async_usleep (gulong microseconds)
}
void
-gkr_async_sleep (glong seconds)
+gkr_daemon_async_sleep (glong seconds)
{
g_assert (async_mutex);
diff --git a/common/gkr-async.h b/daemon/util/gkr-daemon-async.h
similarity index 56%
rename from common/gkr-async.h
rename to daemon/util/gkr-daemon-async.h
index 6069eba..963ecc0 100644
--- a/common/gkr-async.h
+++ b/daemon/util/gkr-daemon-async.h
@@ -1,5 +1,5 @@
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-async.h - some daemon async functionality
+/* gkr-daemon-async.h - some daemon async functionality
Copyright (C) 2007, Nate Nielsen
@@ -30,28 +30,28 @@
* ASYNC WAIT CONDITIONS
*/
-struct _GkrAsyncWait;
-typedef struct _GkrAsyncWait GkrAsyncWait;
+struct _GkrDaemonAsyncWait;
+typedef struct _GkrDaemonAsyncWait GkrDaemonAsyncWait;
/*
* Create a new wait condition. Use instead of GCond.
*/
-GkrAsyncWait* gkr_async_wait_new (void);
+GkrDaemonAsyncWait* gkr_daemon_async_wait_new (void);
/*
* Free a wait condition
*/
-void gkr_async_wait_free (GkrAsyncWait *wait);
+void gkr_daemon_async_wait_free (GkrDaemonAsyncWait *wait);
/*
* Wait on a condition, this should be done in a loop, as with GCond
*/
-void gkr_async_wait (GkrAsyncWait *wait);
+void gkr_daemon_async_wait (GkrDaemonAsyncWait *wait);
/*
* Notify that a condition has been satisfied
*/
-void gkr_async_notify (GkrAsyncWait *wait);
+void gkr_daemon_async_notify (GkrDaemonAsyncWait *wait);
/*
* Per Async Worker Storage. This is currently exactly the same
@@ -59,11 +59,11 @@ void gkr_async_notify (GkrAsyncWait *wait);
* API instead.
*/
-typedef GPrivate GkrAsyncPrivate;
-#define gkr_async_private_new(x) g_private_new (x)
-#define gkr_async_private_get(x) g_private_get (x)
-#define gkr_async_private_set(x, y) g_private_set (x, y)
-#define gkr_async_private_free(x)
+typedef GPrivate GkrDaemonAsyncPrivate;
+#define gkr_daemon_async_private_new(x) g_private_new (x)
+#define gkr_daemon_async_private_get(x) g_private_get (x)
+#define gkr_daemon_async_private_set(x, y) g_private_set (x, y)
+#define gkr_daemon_async_private_free(x)
/* -----------------------------------------------------------------------------
* GENERAL ASYNC CALLS
@@ -73,22 +73,22 @@ typedef GPrivate GkrAsyncPrivate;
* Yield the current thread (main thread or worker). Returns FALSE
* if the current thread is supposed to stop.
*/
-gboolean gkr_async_yield (void);
+gboolean gkr_daemon_async_yield (void);
/*
* Enable concurrent execution of the current thread in the process
*/
-void gkr_async_begin_concurrent (void);
+void gkr_daemon_async_begin_concurrent (void);
/*
* Put current thread back into cooperative execution
*/
-void gkr_async_end_concurrent (void);
+void gkr_daemon_async_end_concurrent (void);
/*
* See if current thread is supposed to stop
*/
-gboolean gkr_async_is_stopping (void);
+gboolean gkr_daemon_async_is_stopping (void);
/*
* Register a cancellation function which is called when the current
@@ -97,75 +97,75 @@ gboolean gkr_async_is_stopping (void);
*
* The GDestroyNotify function is run from an arbitary thread.
*/
-void gkr_async_register_cancel (GDestroyNotify cancel, gpointer data);
+void gkr_daemon_async_register_cancel (GDestroyNotify cancel, gpointer data);
/*
* Unregister a cancellation function.
*/
-void gkr_async_unregister_cancel (GDestroyNotify cancel, gpointer data);
+void gkr_daemon_async_unregister_cancel (GDestroyNotify cancel, gpointer data);
/*
* The current thread should yield and sleep.
*/
-void gkr_async_usleep (gulong microseconds);
+void gkr_daemon_async_usleep (gulong microseconds);
/*
* The current thread should yield and sleep.
*/
-void gkr_async_sleep (glong seconds);
+void gkr_daemon_async_sleep (glong seconds);
/* -----------------------------------------------------------------------------
* WORKER THREADS
*/
-struct _GkrAsyncWorker;
-typedef struct _GkrAsyncWorker GkrAsyncWorker;
+struct _GkrDaemonAsyncWorker;
+typedef struct _GkrDaemonAsyncWorker GkrDaemonAsyncWorker;
-typedef void (*GkrAsyncWorkerCallback) (GkrAsyncWorker *worker, gpointer result, gpointer user_data);
+typedef void (*GkrDaemonAsyncWorkerCallback) (GkrDaemonAsyncWorker *worker, gpointer result, gpointer user_data);
/*
* Called before using any async functionality or workers.
*/
-void gkr_async_workers_init (GMainLoop *mainloop);
+void gkr_daemon_async_workers_init (GMainLoop *mainloop);
/*
* Called at end of application.
*/
-void gkr_async_workers_uninit (void);
+void gkr_daemon_async_workers_uninit (void);
/*
* Stop all running workers and wait for them to finish.
*/
-void gkr_async_workers_stop_all (void);
+void gkr_daemon_async_workers_stop_all (void);
/*
* Get number of worker threads.
*/
-guint gkr_async_workers_get_n (void);
+guint gkr_daemon_async_workers_get_n (void);
/*
* Start a new worker thread. callback is run when the worker
* ends, whether cancelled or not. The returned pointer is
* only valid while worker is running.
*/
-GkrAsyncWorker* gkr_async_worker_start (GThreadFunc worker,
- GkrAsyncWorkerCallback callback,
- gpointer user_data);
+GkrDaemonAsyncWorker* gkr_daemon_async_worker_start (GThreadFunc worker,
+ GkrDaemonAsyncWorkerCallback callback,
+ gpointer user_data);
/*
* Send a notification to a worker thread to stop.
*/
-void gkr_async_worker_cancel (GkrAsyncWorker *worker);
+void gkr_daemon_async_worker_cancel (GkrDaemonAsyncWorker *worker);
/*
* Send a notification to a worker thread to stop, and wait for
* it to finish.
*/
-void gkr_async_worker_stop (GkrAsyncWorker *worker);
+void gkr_daemon_async_worker_stop (GkrDaemonAsyncWorker *worker);
/*
* Check if a given worker pointer is still valid.
*/
-gboolean gkr_async_worker_is_valid (GkrAsyncWorker *worker);
+gboolean gkr_daemon_async_worker_is_valid (GkrDaemonAsyncWorker *worker);
-#endif /* __GKR_ASYNC_H__ */
+#endif /* __GKR_DAEMON_ASYNC_H__ */
diff --git a/daemon/gkr-daemon-util.c b/daemon/util/gkr-daemon-util.c
similarity index 98%
rename from daemon/gkr-daemon-util.c
rename to daemon/util/gkr-daemon-util.c
index 4d2f0bf..d328a0a 100644
--- a/daemon/gkr-daemon-util.c
+++ b/daemon/util/gkr-daemon-util.c
@@ -23,10 +23,9 @@
#include "config.h"
+#include "gkr-daemon-async.h"
#include "gkr-daemon-util.h"
-#include "common/gkr-async.h"
-
#include "egg/egg-cleanup.h"
#include <glib.h>
@@ -53,7 +52,7 @@ G_DEFINE_TYPE (GkrDaemonClient, gkr_daemon_client, G_TYPE_OBJECT);
static guint signals[LAST_SIGNAL] = { 0 };
-static GkrAsyncPrivate *current_client = NULL;
+static GkrDaemonAsyncPrivate *current_client = NULL;
/* -----------------------------------------------------------------------------
* HELPERS
@@ -72,7 +71,7 @@ register_client (GkrDaemonClient *client)
{
g_assert (GKR_IS_DAEMON_CLIENT (client));
g_assert (current_client);
- gkr_async_private_set (current_client, client);
+ gkr_daemon_async_private_set (current_client, client);
}
/* -----------------------------------------------------------------------------
@@ -165,7 +164,7 @@ gkr_daemon_client_class_init (GkrDaemonClientClass *klass)
G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GkrDaemonClientClass, disconnected),
NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
- current_client = gkr_async_private_new (unregister_client);
+ current_client = gkr_daemon_async_private_new (unregister_client);
}
/* -------------------------------------------------------------------------------------
@@ -217,7 +216,7 @@ gkr_daemon_client_get_current (void)
{
if (!current_client)
return NULL;
- return gkr_async_private_get (current_client);
+ return gkr_daemon_async_private_get (current_client);
}
pid_t
diff --git a/daemon/gkr-daemon-util.h b/daemon/util/gkr-daemon-util.h
similarity index 100%
rename from daemon/gkr-daemon-util.h
rename to daemon/util/gkr-daemon-util.h
diff --git a/daemon/util/tests/.gitignore b/daemon/util/tests/.gitignore
new file mode 100644
index 0000000..7290a08
--- /dev/null
+++ b/daemon/util/tests/.gitignore
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+run-auto-test*
+
diff --git a/daemon/util/tests/Makefile.am b/daemon/util/tests/Makefile.am
new file mode 100644
index 0000000..a2fe165
--- /dev/null
+++ b/daemon/util/tests/Makefile.am
@@ -0,0 +1,11 @@
+UNIT_AUTO = \
+ unit-test-async.c
+
+UNIT_PROMPT =
+
+UNIT_LIBS = \
+ $(top_builddir)/egg/libegg.la \
+ $(top_builddir)/egg/libegg-dbus.la \
+ $(top_builddir)/daemon/util/libgkr-daemon-util.la
+
+include $(top_srcdir)/tests/gtest.make
diff --git a/common/tests/unit-test-async.c b/daemon/util/tests/unit-test-async.c
similarity index 55%
rename from common/tests/unit-test-async.c
rename to daemon/util/tests/unit-test-async.c
index 6dc8fe9..9ece465 100644
--- a/common/tests/unit-test-async.c
+++ b/daemon/util/tests/unit-test-async.c
@@ -30,26 +30,18 @@
#include "run-auto-test.h"
-#include "common/gkr-async.h"
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
+#include "daemon/util/gkr-daemon-async.h"
+
+DEFINE_SETUP(async_init)
+{
+ gkr_daemon_async_workers_init (test_mainloop_get ());
+}
static gboolean
cancel_worker (gpointer data)
{
- if (gkr_async_worker_is_valid ((GkrAsyncWorker*)data))
- gkr_async_worker_cancel ((GkrAsyncWorker*)data);
+ if (gkr_daemon_async_worker_is_valid ((GkrDaemonAsyncWorker*)data))
+ gkr_daemon_async_worker_cancel ((GkrDaemonAsyncWorker*)data);
/* Don't call again */
return FALSE;
}
@@ -61,7 +53,6 @@ cancel_worker (gpointer data)
#define SIMPLE_N 5
typedef struct _SimpleParams {
- CuTest *cu;
guint value;
} SimpleParams;
@@ -73,7 +64,7 @@ simple_thread (gpointer data)
for (i = 0; i < SIMPLE_N; ++i) {
++params->value;
- gkr_async_usleep (G_USEC_PER_SEC / 5);
+ gkr_daemon_async_usleep (G_USEC_PER_SEC / 5);
g_printerr("+");
}
@@ -82,29 +73,29 @@ simple_thread (gpointer data)
}
static void
-simple_done (GkrAsyncWorker* worker, gpointer result, gpointer user_data)
+simple_done (GkrDaemonAsyncWorker* worker, gpointer result, gpointer user_data)
{
SimpleParams *params = (SimpleParams*)user_data;
- CuAssert (params->cu, "result didn't get passed through", result == ¶ms->value);
+ /* "result didn't get passed through" */
+ g_assert (result == ¶ms->value);
test_mainloop_quit ();
}
-void unit_test_worker_simple (CuTest* cu)
+DEFINE_TEST(worker_simple)
{
- GkrAsyncWorker *worker;
+ GkrDaemonAsyncWorker *worker;
SimpleParams params;
memset (¶ms, 0, sizeof (params));
- params.cu = cu;
- worker = gkr_async_worker_start (simple_thread, simple_done, ¶ms);
- CuAssertPtrNotNull (cu, worker);
+ worker = gkr_daemon_async_worker_start (simple_thread, simple_done, ¶ms);
+ g_assert (worker != NULL);
/* Run the main loop */
test_mainloop_run (20000);
-
- CuAssertIntEquals (cu, 0, gkr_async_workers_get_n ());
- CuAssertIntEquals (cu, SIMPLE_N, params.value);
+
+ g_assert_cmpint (0, ==, gkr_daemon_async_workers_get_n ());
+ g_assert_cmpint (SIMPLE_N, ==, params.value);
}
/* -----------------------------------------------------------------------------
@@ -112,7 +103,6 @@ void unit_test_worker_simple (CuTest* cu)
*/
typedef struct _CancelParams {
- CuTest *cu;
guint value;
} CancelParams;
@@ -121,10 +111,10 @@ cancel_thread (gpointer data)
{
CancelParams *params = (CancelParams*)data;
- while (!gkr_async_is_stopping ()) {
+ while (!gkr_daemon_async_is_stopping ()) {
++params->value;
g_printerr("+");
- gkr_async_usleep (G_USEC_PER_SEC);
+ gkr_daemon_async_usleep (G_USEC_PER_SEC);
}
g_printerr("!\n");
@@ -132,25 +122,26 @@ cancel_thread (gpointer data)
}
static void
-cancel_done (GkrAsyncWorker* worker, gpointer result, gpointer user_data)
+cancel_done (GkrDaemonAsyncWorker* worker, gpointer result, gpointer user_data)
{
- CancelParams *params = (CancelParams*)user_data;
- CuAssert (params->cu, "result didn't get passed through", result == user_data);
- CuAssert (params->cu, "completing worker is not valid", gkr_async_worker_is_valid (worker));
+ /* "result didn't get passed through" */
+ g_assert (result == user_data);
+ /* "completing worker is not valid" */
+ g_assert (gkr_daemon_async_worker_is_valid (worker));
test_mainloop_quit ();
}
-void unit_test_worker_cancel (CuTest* cu)
+DEFINE_TEST(worker_cancel)
{
- GkrAsyncWorker *worker;
+ GkrDaemonAsyncWorker *worker;
CancelParams params;
memset (¶ms, 0, sizeof (params));
- params.cu = cu;
- worker = gkr_async_worker_start (cancel_thread, cancel_done, ¶ms);
- CuAssertPtrNotNull (cu, worker);
- CuAssert (cu, "worker just started is not valid", gkr_async_worker_is_valid (worker));
+ worker = gkr_daemon_async_worker_start (cancel_thread, cancel_done, ¶ms);
+ g_assert (worker != NULL);
+ /* "worker just started is not valid" */
+ g_assert (gkr_daemon_async_worker_is_valid (worker));
/* A less than two seconds later, cancel it */
g_timeout_add (1600, cancel_worker, worker);
@@ -159,9 +150,10 @@ void unit_test_worker_cancel (CuTest* cu)
test_mainloop_run (20000);
/* Two seconds should have elapsed in other thread */
- CuAssertIntEquals (cu, 2, params.value);
- CuAssertIntEquals (cu, 0, gkr_async_workers_get_n ());
- CuAssert (cu, "worker is still valid after done", !gkr_async_worker_is_valid (worker));
+ g_assert_cmpint (2, ==, params.value);
+ g_assert_cmpint (0, ==, gkr_daemon_async_workers_get_n ());
+ /* "worker is still valid after done" */
+ g_assert (!gkr_daemon_async_worker_is_valid (worker));
}
/* -----------------------------------------------------------------------------
@@ -169,7 +161,6 @@ void unit_test_worker_cancel (CuTest* cu)
*/
typedef struct _FiveParams {
- CuTest *cu;
guint number;
guint value;
} FiveParams;
@@ -179,19 +170,19 @@ five_thread (gpointer data)
{
FiveParams *params = (FiveParams*)data;
- while (gkr_async_yield ()) {
+ while (gkr_daemon_async_yield ()) {
++params->value;
g_printerr("%d", params->number);
- gkr_async_sleep (1);
+ gkr_daemon_async_sleep (1);
}
g_printerr("!\n");
return data;
}
-void unit_test_worker_five (CuTest* cu)
+DEFINE_TEST(worker_five)
{
- GkrAsyncWorker *worker;
+ GkrDaemonAsyncWorker *worker;
FiveParams params[5];
int i;
@@ -199,30 +190,33 @@ void unit_test_worker_five (CuTest* cu)
for (i = 0; i < 5; ++i)
{
- params[i].cu = cu;
params[i].number = i;
/* Make the last one cancel the main loop */
- worker = gkr_async_worker_start (five_thread, NULL, ¶ms[i]);
- CuAssertPtrNotNull (cu, worker);
- CuAssert (cu, "worker just started is not valid", gkr_async_worker_is_valid (worker));
+ worker = gkr_daemon_async_worker_start (five_thread, NULL, ¶ms[i]);
+ g_assert (worker != NULL);
+ /* "worker just started is not valid" */
+ g_assert (gkr_daemon_async_worker_is_valid (worker));
/* Stop each in a little less than i seconds */
g_timeout_add ((1000 * i) - 200, cancel_worker, worker);
}
- CuAssertIntEquals (cu, 5, gkr_async_workers_get_n ());
+ g_assert_cmpint (5, ==, gkr_daemon_async_workers_get_n ());
/* Run the main loop */
test_mainloop_run (1900);
- CuAssert (cu, "last worker should still be valid 2 seconds later", gkr_async_worker_is_valid (worker));
- gkr_async_worker_stop (worker);
+ /* "last worker should still be valid 2 seconds later" */
+ g_assert (gkr_daemon_async_worker_is_valid (worker));
+ gkr_daemon_async_worker_stop (worker);
- CuAssert (cu, "all workers have somehow quit", gkr_async_workers_get_n () > 0);
- gkr_async_workers_stop_all ();
+ /* "all workers have somehow quit" */
+ g_assert (gkr_daemon_async_workers_get_n () > 0);
+ gkr_daemon_async_workers_stop_all ();
- CuAssertIntEquals (cu, 0, gkr_async_workers_get_n ());
- CuAssert (cu, "last worker is still valid after exit", !gkr_async_worker_is_valid (worker));
+ g_assert_cmpint (0, ==, gkr_daemon_async_workers_get_n ());
+ /* "last worker is still valid after exit" */
+ g_assert (!gkr_daemon_async_worker_is_valid (worker));
}
diff --git a/tests/test-helpers.c b/tests/test-helpers.c
index 8043a73..5b971c3 100644
--- a/tests/test-helpers.c
+++ b/tests/test-helpers.c
@@ -29,7 +29,7 @@ void* egg_memory_fallback (void *p, size_t sz)
}
#ifndef EXTERNAL_TEST
-#include "common/gkr-async.h"
+#include "daemon/util/gkr-daemon-async.h"
#endif
static GMainLoop *mainloop = NULL;
@@ -110,7 +110,7 @@ main (int argc, char* argv[])
#ifndef EXTERNAL_TEST
- gkr_async_workers_init (mainloop);
+ gkr_daemon_async_workers_init (mainloop);
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]