aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test8.c78
1 files changed, 78 insertions, 0 deletions
diff --git a/tests/test8.c b/tests/test8.c
new file mode 100644
index 0000000000..1f446e171d
--- /dev/null
+++ b/tests/test8.c
@@ -0,0 +1,78 @@
+/* test posix thread folder proxy */
+
+
+#include "camel.h"
+#include "camel-log.h"
+
+CamelThreadProxy *proxy;
+CamelFuncDef *func_def;
+
+
+void
+test_sync_func (int num)
+{
+ printf ("Sync function number %d\n", num);
+ printf ("Sync function : current thread : %d\n", pthread_self ());
+
+}
+
+
+void
+test_async_cb (int num)
+{
+ printf ("Callback number %d\n", num);
+ printf ("Callback : current thread : %d\n", pthread_self ());
+}
+
+void
+test_async_func (int num)
+{
+ CamelOp *cb;
+
+ printf ("Async function number %d\n", num);
+ printf ("Async function : current thread : %d\n", pthread_self ());
+ sleep (1);
+ cb = camel_marshal_create_op (func_def, test_async_cb, num);
+ camel_thread_proxy_push_cb (proxy, cb);
+
+
+}
+
+int
+main (int argc, char **argv)
+{
+ int i;
+ CamelOp *op;
+
+ camel_debug_level = CAMEL_LOG_LEVEL_WARNING;
+
+ camel_init ();
+
+ func_def =
+ camel_func_def_new (camel_marshal_NONE__INT,
+ 1,
+ GTK_TYPE_INT);
+
+ printf ("--== Testing Simple marshalling system ==--\n");
+ for (i=0; i<5; i++) {
+ printf ("Iterration number %d\n", i);
+ op = camel_marshal_create_op (func_def, test_sync_func, i);
+ camel_op_run (op);
+ camel_op_free (op);
+
+ }
+ printf ("\n\n");
+
+ proxy = camel_thread_proxy_new ();
+
+ printf ("--== Testing Asynchronous Operation System ==--\n");
+ for (i=0; i<5; i++) {
+ printf ("Pushing async operation number %d for execution\n", i);
+ op = camel_marshal_create_op (func_def, test_async_func, i);
+ camel_thread_proxy_push_op (proxy, op);
+ }
+ printf ("\n\n");
+ printf ("--== Operations execution planned ==--\n");
+ gtk_main ();
+}
+