diff options
Diffstat (limited to 'tcpserver.c')
-rw-r--r-- | tcpserver.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/tcpserver.c b/tcpserver.c index b1b5042..f9b9095 100644 --- a/tcpserver.c +++ b/tcpserver.c @@ -56,6 +56,8 @@ typedef struct _tcpserver t_outlet *x_addrout; // legacy t_outlet *x_statout; + int x_serialize; + t_tcpserver_socketreceiver *x_sr[MAX_CONNECT]; /* socket per connection */ t_int x_nconnections; @@ -468,7 +470,7 @@ static void tcpserver_receive_callback(void *y0, if(c) { tcpserver_info_connection(x, y); x->x_floatlist=iemnet__chunk2list(c, x->x_floatlist); // get's destroyed in the dtor - iemnet__streamout(x->x_msgout, x->x_floatlist->argc, x->x_floatlist->argv); + iemnet__streamout(x->x_msgout, x->x_floatlist->argc, x->x_floatlist->argv, x->x_serialize); } else { // disconnected int sockfd=y->sr_fd; @@ -572,6 +574,11 @@ static void tcpserver_port(t_tcpserver*x, t_floatarg fportno) outlet_anything(x->x_statout, gensym("port"), 1, ap); } +static void tcpserver_serialize(t_tcpserver *x, t_floatarg doit) { + x->x_serialize=doit; +} + + static void *tcpserver_new(t_floatarg fportno) { t_tcpserver *x; @@ -585,6 +592,7 @@ static void *tcpserver_new(t_floatarg fportno) x->x_addrout = outlet_new(&x->x_obj, gensym("list" )); x->x_statout = outlet_new(&x->x_obj, 0);/* 5th outlet for everything else */ + x->x_serialize=1; x->x_connectsocket = -1; x->x_port = -1; @@ -645,6 +653,9 @@ IEMNET_EXTERN void tcpserver_setup(void) class_addlist (tcpserver_class, (t_method)tcpserver_defaultsend); + class_addmethod(tcpserver_class, (t_method)tcpserver_serialize, gensym("serialize"), A_FLOAT, 0); + + class_addmethod(tcpserver_class, (t_method)tcpserver_port, gensym("port"), A_DEFFLOAT, 0); class_addbang (tcpserver_class, (t_method)tcpserver_info); } |