On May 9, 2017, at 7:10 AM, Alejandro Pérez Méndez <alex@um.es> wrote:
Ok I think I got it. Was your suggestion to use the event list for having the timer functionality, but then on the event handler start/use a custom thread for performing the lengthy operation? If the work to be done is small, it can just use the main thread, and the main event loop.
If the work to be done is large, the module should start it's own thread, and use it's own event loop. Thanks. My case would be the second one, so would not need to call radius_event_list_corral() as a new event loop must be created.
It seems that an event loop do not serve my purposes, as it is not thread-safe and I will be inserting from the REQUEST thread pool, whereas consuming from the rekeyer thread (the one I create for my module). I can obviously add a mutex but then REQUESTS handling might be blocked for as long as a rekey can last (which is what I wanted to avoid in the first place). Would it be ok for FR standards to use a HEAP directly and have my rekeyer thread consuming data from the HEAP and performing the specific task of rekeying? In that way I can separate extracting from the HEAP (mutex protected) than executing the rekey (does not need to be protected). I'm asking since I will eventually want this code to be merged, so I'd better know beforehand :). Alejandro
Alejandro
Alan DeKok.
- List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
- List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html