[PD-dev] mrpeach/tcpserver one last lingering bug
Martin Peach
martin.peach at sympatico.ca
Thu May 6 05:57:49 CEST 2010
Ivica Ico Bukvic wrote:
> Martin,
>
...
> please send me a brief flow of functions "broadcast" calls so that I can figure out where to look for potential fixes/improvements.
Well broadcast calls tcpserver_send_bytes() once for each connected client.
tcpserver_send_bytes() fills a buffer from the input message and spawns
a thread running tcpserver_send_buf_thread() to send the content
whenever the buffer is full or the message is completely converted from
atoms to bytes.
I think as long as your messages all fit in a single buffer it's a lot
easier. The snag is that tcpserver_send_bytes() can fill the buffer more
than once for each message if the message is > 64k.
Apart from that, to skip redundant conversion of atom to byte and
multiple thread creation, I would make a single buffer from the input
and pass it to a single thread that sends the same buffer to each
connected client.
Since the current tcpserver_send_bytes() can also be used to send very
long files, it may be better to make a dedicated broadcast function that
only does small packets (less than 65536 bytes), as broadcasting
megabytes to many clients will no doubt peg the machine.
Martin
More information about the Pd-dev
mailing list