X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmetaproxy_prog.cpp;h=083ea29812f67a36dd240fc42105a6a0c27a1e15;hb=9838c2eadf06b6bfe3d6eb264c1b485b51ba1a06;hp=bfa1b771805c7b4be385d9b1ab468a57479d3a32;hpb=3c9b71a3db56e63476d68ef6b19b5c1a0c47fa75;p=metaproxy-moved-to-github.git diff --git a/src/metaproxy_prog.cpp b/src/metaproxy_prog.cpp index bfa1b77..083ea29 100644 --- a/src/metaproxy_prog.cpp +++ b/src/metaproxy_prog.cpp @@ -30,8 +30,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #include #include -#include "router_flexml.hpp" -#include "factory_static.hpp" +#include #if HAVE_UNISTD_H #include @@ -45,7 +44,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA namespace mp = metaproxy_1; -mp::RouterFleXML *routerp = 0; +mp::RouterXML *routerp = 0; static void set_log_prefix(void) { @@ -60,18 +59,20 @@ static void set_log_prefix(void) #if HAVE_UNISTD_H static pid_t process_group = 0; -static void sig_usr1_handler(int s) +static void sig_usr1_handler(int signo) { yaz_log(YLOG_LOG, "metaproxy received SIGUSR1"); - routerp->stop(); + if (routerp) + routerp->stop(signo); } -static void sig_term_handler(int s) +static void sig_term_handler(int signo) { - yaz_log(YLOG_LOG, "metaproxy received SIGTERM"); - yaz_log(YLOG_LOG, "metaproxy stop"); - kill(-process_group, SIGTERM); /* kill all children processes as well */ - _exit(0); + if (routerp) + { + yaz_log(YLOG_LOG, "metaproxy received SIGTERM"); + routerp->stop(signo); + } } #endif @@ -84,12 +85,14 @@ static void work_common(void *data) signal(SIGTERM, sig_term_handler); signal(SIGUSR1, sig_usr1_handler); #endif - routerp = (mp::RouterFleXML*) data; + routerp = (mp::RouterXML*) data; routerp->start(); mp::Package pack; pack.router(*routerp).move(); - yaz_log(YLOG_LOG, "metaproxy stop"); /* only for graceful stop */ + yaz_log(YLOG_LOG, "metaproxy stop"); + delete routerp; + routerp = 0; #if HAVE_UNISTD_H kill(-process_group, SIGTERM); /* kill all children processes as well */ #endif @@ -247,9 +250,8 @@ static int sc_main( wrbuf_puts(base_path, "."); ret = 0; try { - mp::FactoryStatic factory; - mp::RouterFleXML *router = - new mp::RouterFleXML(doc, factory, test_config, wrbuf_cstr(base_path)); + mp::RouterXML *router = + new mp::RouterXML(doc, test_config, wrbuf_cstr(base_path)); if (!test_config) {