Add a new function run_service to st_service_pump, which works like io_service::run, so, it will block until service run out, and do not call stop_service any more.
Add a virtual callback function on_exception to st_service_pump, it will be invoked when exception caught, you can rewrite it do decide weather to continue(return true) or stop the service(return false).