[PD-dev] help with sys_addpollfn and friends

Martin Peach martinrp at alcor.concordia.ca
Tue May 16 17:29:59 CEST 2006


walter jenner wrote:
> hello!
> 
> can somebody give me a short explanation, what is done if i add a poll 
> function? Can i use it to check if something has been received at a socket?
> 

Look in s_inter.c and x_net.c of the pd source....
Pd monitors registered file descriptors, which are usually sockets, and 
calls a user-defined function when something happens, usually data ready 
to read or incoming connection.
The third parameter in the call is a pointer to a data structure 
associated with the callback function.
sys_domicrosleep() in s_inter.c checks for activity on each registered 
socket by calling select() on each one (but only checks the read set, so 
errors don't get caught this way).
sys_domicrosleep() is quasiperiodically called from m_scheduler(), pd's 
'main loop'.
In pd, socketreceiver_read() is called from sys_domicrosleep() when 
something has been received at a socket, so yes, you can use it for that...

It's also possible to do the same thing using timers with clock_new(), 
as in netclient. Timers seem to have higher priority than pollfunctions 
in m_scheduler().

Martin

> thx a lot! (and sorry for the stupid question, if it is one :) )
> 
> best greetings,
> 
> walter
> 
> _______________________________________________
> PD-dev mailing list
> PD-dev at iem.at
> http://lists.puredata.info/listinfo/pd-dev
> 
> 





More information about the Pd-dev mailing list