src/relpipe-out-jack.cpp
branchv_0
changeset 3 baa8055c5b10
parent 0 3bc3b33ccb02
child 21 70b252d02a92
--- a/src/relpipe-out-jack.cpp	Tue Sep 29 20:49:04 2020 +0200
+++ b/src/relpipe-out-jack.cpp	Wed Sep 30 00:34:41 2020 +0200
@@ -35,18 +35,26 @@
 using namespace relpipe::reader;
 using namespace relpipe::out::jack;
 
+static std::shared_ptr<JackHandler> jackHandler = nullptr;
+
+void finish(int sig) {
+	if (jackHandler) jackHandler->finish(sig);
+}
+
 int main(int argc, char**argv) {
 	CLI cli(argc, argv);
 	CLI::untieStdIO();
-	
+
 	int resultCode = CLI::EXIT_CODE_UNEXPECTED_ERROR;
 
 	try {
+		signal(SIGHUP, finish);
+		signal(SIGINT, finish);
 		CLIParser cliParser;
 		Configuration configuration = cliParser.parse(cli.arguments());
 		std::shared_ptr<RelationalReader> reader(Factory::create(std::cin));
-		JackHandler handler(configuration);
-		reader->addHandler(&handler);
+		jackHandler.reset(new JackHandler(configuration));
+		reader->addHandler(jackHandler.get());
 		reader->process();
 
 		resultCode = CLI::EXIT_CODE_SUCCESS;