diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test8.c | 78 |
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 (); +} + |