Luis Lavena
2006-Feb-20 19:43 UTC
[Win32utils-devel] Win32 service and blocking code in service_main
Hello mailing list! Sorry for the personal/private mail I sent to Daniel and Park, but just a few minutes ago I subscribed to this list. I have found the solution, for webrick, mongrel and other webserver (well I guess). If the code in service_main is blocked (like the webrick dispatcher), the service_main function never exit/left, so service.mainloop never terminates and service control timeout. What I have done is put the running dispatcher in a Thread that is fired by service_main, and then I loop (like you have said Park) using small sleep values until state != RUNNING, which is signaled during a stop command. Now mongrel and webrick start and stop without problems, from controller script or using the Services console (or command line "net start/stop"). Because mongrel dispatch working threads, there is no need to create another one that join with them, just I have added comments to the code that could be useful with webrick too. Regards and thank you for your time, Luis -------------- next part -------------- A non-text attachment was scrubbed... Name: mongrel_simple_service.rb Type: application/octet-stream Size: 3738 bytes Desc: not available Url : http://rubyforge.org/pipermail/win32utils-devel/attachments/20060220/1e0d7bee/mongrel_simple_service-0001.obj