summaryrefslogtreecommitdiff
path: root/examples/subscribe-sample.cpp
diff options
context:
space:
mode:
authorJürgen Gehring <Juergen.Gehring@bmw.de>2016-10-11 05:20:33 -0700
committerJürgen Gehring <Juergen.Gehring@bmw.de>2016-10-11 05:20:33 -0700
commit1375432503c0a72df7ad5c793c3e1f04e6b9e730 (patch)
tree4b229a9c5a7767db69db015f8e92e01c64614bf0 /examples/subscribe-sample.cpp
parent273814c76be4a8f906dc053492529b8d53b9e807 (diff)
downloadvSomeIP-1375432503c0a72df7ad5c793c3e1f04e6b9e730.tar.gz
vsomeip 2.4.22.4.2
Diffstat (limited to 'examples/subscribe-sample.cpp')
-rw-r--r--examples/subscribe-sample.cpp27
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;