From 9ab98fb29cffdb6d9ff7b4cf988705b291423114 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?IOhannes=20m=20zm=C3=B6lnig?= Date: Wed, 7 Apr 2010 14:27:36 +0000 Subject: new receiver callback: chunk2list has to be handled by client svn path=/trunk/externals/iem/iemnet/; revision=13391 --- udpclient.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'udpclient.c') diff --git a/udpclient.c b/udpclient.c index a1e1bea..0034fca 100644 --- a/udpclient.c +++ b/udpclient.c @@ -56,12 +56,12 @@ typedef struct _udpclient /* multithread stuff */ pthread_t x_threadid; /* id of child thread */ pthread_attr_t x_threadattr; /* attributes of child thread */ + + t_iemnet_floatlist *x_floatlist; } t_udpclient; -static void udpclient_receive_callback(void *x, - t_iemnet_chunk*, - int argc, t_atom*argv); +static void udpclient_receive_callback(void *x, t_iemnet_chunk*); @@ -185,12 +185,13 @@ static void udpclient_send(t_udpclient *x, t_symbol *s, int argc, t_atom *argv) outlet_anything( x->x_statusout, gensym("sent"), 1, &output_atom); } -static void udpclient_receive_callback(void*y, t_iemnet_chunk*c, int argc, t_atom*argv) { +static void udpclient_receive_callback(void*y, t_iemnet_chunk*c) { t_udpclient *x=(t_udpclient*)y; - if(argc) { + if(c) { iemnet__addrout(x->x_statusout, x->x_addrout, x->x_addr, x->x_port); - outlet_list(x->x_msgout, gensym("list"), argc, argv); + x->x_floatlist=iemnet__chunk2list(c, x->x_floatlist); // gets destroyed in the dtor + outlet_list(x->x_msgout, gensym("list"),x->x_floatlist->argc, x->x_floatlist->argv); } else { // disconnected DEBUG("disconnected"); @@ -219,6 +220,8 @@ static void *udpclient_new(void) x->x_clock = clock_new(x, (t_method)udpclient_tick); + x->x_floatlist=iemnet__floatlist_create(1024); + /* prepare child thread */ if(pthread_attr_init(&x->x_threadattr) < 0) verbose(1, "[%s] warning: could not prepare child thread", objName); @@ -232,7 +235,8 @@ static void *udpclient_new(void) static void udpclient_free(t_udpclient *x) { udpclient_disconnect(x); - clock_free(x->x_clock); + if(x->x_clock)clock_free(x->x_clock);x->x_clock=NULL; + if(x->x_floatlist)iemnet__floatlist_destroy(x->x_floatlist);x->x_floatlist=NULL; } IEMNET_EXTERN void udpclient_setup(void) -- cgit v1.2.1