diff options
Diffstat (limited to 'examples/subscribe-sample.cpp')
-rw-r--r-- | examples/subscribe-sample.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/examples/subscribe-sample.cpp b/examples/subscribe-sample.cpp index 915ea11..38b80c8 100644 --- a/examples/subscribe-sample.cpp +++ b/examples/subscribe-sample.cpp @@ -2,7 +2,9 @@ // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. - +#ifndef VSOMEIP_ENABLE_SIGNAL_HANDLING +#include <csignal> +#endif #include <chrono> #include <condition_variable> #include <iomanip> @@ -57,6 +59,15 @@ public: app_->start(); } +#ifndef VSOMEIP_ENABLE_SIGNAL_HANDLING + /* + * Handle signal to shutdown + */ + void stop() { + app_->stop(); + } +#endif + void on_state(vsomeip::state_type_e _state) { if (_state == vsomeip::state_type_e::ST_REGISTERED) { app_->request_service(SAMPLE_SERVICE_ID, SAMPLE_INSTANCE_ID); @@ -134,6 +145,15 @@ private: bool be_quiet_; }; +#ifndef VSOMEIP_ENABLE_SIGNAL_HANDLING + client_sample *its_sample_ptr(nullptr); + void handle_signal(int _signal) { + if (its_sample_ptr != nullptr && + (_signal == SIGINT || _signal == SIGTERM)) + its_sample_ptr->stop(); + } +#endif + int main(int argc, char **argv) { bool use_tcp = false; @@ -151,6 +171,11 @@ int main(int argc, char **argv) { } client_sample its_sample(use_tcp); +#ifndef VSOMEIP_ENABLE_SIGNAL_HANDLING + its_sample_ptr = &its_sample; + signal(SIGINT, handle_signal); + signal(SIGTERM, handle_signal); +#endif its_sample.init(); its_sample.start(); return 0; |