Skip to content

Commit ff4d081

Browse files
Added support for user defined return codes in signal_handler.
1 parent 82c16fc commit ff4d081

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

sdk/include/teiacare/sdk/signal_handler.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ void install_signal_handlers(std::function<void(const char*, int)> callback = {}
2929
*
3030
* This function blocks until either an OS signal is rised or tc::sdk::quit() is called from another thread.
3131
*/
32-
void wait_for_quit();
32+
int wait_for_quit();
3333

3434
/*!
3535
* \brief Unlock the thread that is waiting on tc::sdk::wait_for_quit()

sdk/src/signal_handler.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,20 @@
1414

1515
#include <teiacare/sdk/signal_handler.hpp>
1616

17+
#include <atomic>
1718
#include <csignal>
1819
#include <semaphore>
1920

2021
namespace tc::sdk
2122
{
2223
static std::function<void(const char*, int)> signal_callback;
2324
static std::binary_semaphore sync(0);
25+
static std::atomic<int> return_code(0);
2426

2527
void quit(const char* message, int signal)
2628
{
29+
return_code = signal;
30+
2731
if (signal_callback)
2832
{
2933
signal_callback(message, signal);
@@ -35,9 +39,10 @@ void quit(const char* message, int signal)
3539
// std::call_once(signal_flag, quit, message, signal);
3640
}
3741

38-
void wait_for_quit()
42+
int wait_for_quit()
3943
{
4044
sync.acquire();
45+
return return_code.load();
4146
}
4247

4348
void signal_handler(int signal)

0 commit comments

Comments
 (0)