You know that the Eclipse Paho project has a Lua client due to hit Git within days, right?
On Wednesday, December 12, 2012, Bart Van Der Meerssche wrote: > Hello list, > > I'm currently writing Lua bindings for libmosquitto [1]. Since Lua does > not support preemptive multithreading, using mosquitto_loop_start is not an > option. As suggested in the libmosquitto documentation, I'm integrating > mosquitto_loop_read/write/misc into a Lua event loop instead. The basic > functionality works ok. However, when a network error occurs or the broker > shuts down, the event loop starts busy looping. strace output: > > poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}], 2, -1) = 1 ([{fd=6, > revents=POLLIN}]) > read(6, "", 1) = 0 > poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}], 2, -1) = 1 ([{fd=6, > revents=POLLIN}]) > read(6, "", 1) = 0 > > ... > > stracing the libmosquitto event loop: > [pid 12721] select(4, [3], [], NULL, {1, 0}) = 1 (in [3], left {0, 332713}) > [pid 12721] read(3, "", 1) = 0 > [pid 12721] close(3) = 0 > > Looking at the mosquitto_loop code shows that if a read or write error > occurs, the socket is closed with the private _mosquitto_socket_close > function, which updates the internal mosq state as well. This means that > the current libmosquitto API doesn't allow a proper implementation in an > external event loop. Making _mosquitto_socket_close public would be a > start. Integrating the rc handling of: > * rc = mosquitto_loop_read(mosq, max_packets) > * rc = mosquitto_loop_write(mosq, max_packets) > inside these public functions could be an even cleaner approach. > > Would such a code change be an option? > > [1] https://github.com/flukso/**flm02/tree/rfm12/openwrt/** > package/lua-mosquitto/src<https://github.com/flukso/flm02/tree/rfm12/openwrt/package/lua-mosquitto/src> > > > Cheers > /Bart > > -- > Mailing list: > https://launchpad.net/~**mosquitto-users<https://launchpad.net/~mosquitto-users> > Post to : mosquitto-users@lists.launchpad.net > Unsubscribe : > https://launchpad.net/~**mosquitto-users<https://launchpad.net/~mosquitto-users> > More help : > https://help.launchpad.net/**ListHelp<https://help.launchpad.net/ListHelp> > -- Sent from Gmail Mobile
-- Mailing list: https://launchpad.net/~mosquitto-users Post to : mosquitto-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~mosquitto-users More help : https://help.launchpad.net/ListHelp