CCF
Loading...
Searching...
No Matches
sig_term.h
Go to the documentation of this file.
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the Apache 2.0 License.
3#pragma once
4
5#include "signal.h"
6
7#include <chrono>
8#include <cstring>
9
10namespace asynchost
11{
13 {
14 private:
15 ringbuffer::WriterPtr to_enclave;
16 bool ignore_first_signal = false;
17 size_t signal_count = 0;
18
19 public:
22 bool ignore_first_sigterm_) :
23 to_enclave(writer_factory.create_writer_to_inside()),
24 ignore_first_signal(ignore_first_sigterm_)
25 {}
26
27 void on_signal(int signal)
28 {
29 signal_count++;
30 if (ignore_first_signal && signal_count <= 1)
31 {
33 "{}: Notifying enclave, but not shutting down.", strsignal(signal));
34 RINGBUFFER_WRITE_MESSAGE(AdminMessage::stop_notice, to_enclave);
35 }
36 else
37 {
39 "{}: Shutting down enclave gracefully...", strsignal(signal));
40 RINGBUFFER_WRITE_MESSAGE(AdminMessage::stop, to_enclave);
41 }
42 }
43 };
44
47}
Definition sig_term.h:13
void on_signal(int signal)
Definition sig_term.h:27
ShutdownSignalImpl(ringbuffer::AbstractWriterFactory &writer_factory, bool ignore_first_sigterm_)
Definition sig_term.h:20
Definition proxy.h:51
Definition ring_buffer_types.h:153
#define LOG_INFO_FMT
Definition logger.h:362
Definition after_io.h:8
std::shared_ptr< AbstractWriter > WriterPtr
Definition ring_buffer_types.h:150
#define RINGBUFFER_WRITE_MESSAGE(MSG,...)
Definition ring_buffer_types.h:255