X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmetaproxy_prog.cpp;h=481901bb6e15cba207f66951f264f7a98b919ace;hb=0098e12fb155644a8befc6c5c5a3d04308128e72;hp=bfa1b771805c7b4be385d9b1ab468a57479d3a32;hpb=3c9b71a3db56e63476d68ef6b19b5c1a0c47fa75;p=metaproxy-moved-to-github.git diff --git a/src/metaproxy_prog.cpp b/src/metaproxy_prog.cpp index bfa1b77..481901b 100644 --- a/src/metaproxy_prog.cpp +++ b/src/metaproxy_prog.cpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2013 Index Data + Copyright (C) Index Data Metaproxy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -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) { @@ -59,19 +58,22 @@ static void set_log_prefix(void) #if HAVE_UNISTD_H static pid_t process_group = 0; +static int sig_received = 0; -static void sig_usr1_handler(int s) +static void sig_usr1_handler(int signo) { - yaz_log(YLOG_LOG, "metaproxy received SIGUSR1"); - routerp->stop(); + sig_received = signo; + 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); + sig_received = signo; + if (routerp) + { + routerp->stop(signo); + } } #endif @@ -84,12 +86,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 +251,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) {