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 "enclave.h"
6#include "signal.h"
7
8#include <chrono>
9#include <cstring>
10
11namespace asynchost
12{
14 {
15 private:
16 ringbuffer::WriterPtr to_enclave;
17 bool ignore_first_signal = false;
18 size_t signal_count = 0;
19
20 public:
23 bool ignore_first_sigterm_) :
24 to_enclave(writer_factory.create_writer_to_inside()),
25 ignore_first_signal(ignore_first_sigterm_)
26 {}
27
28 void on_signal(int signal)
29 {
30 signal_count++;
31 if (ignore_first_signal && signal_count <= 1)
32 {
34 "{}: Notifying enclave, but not shutting down.", strsignal(signal));
35 RINGBUFFER_WRITE_MESSAGE(AdminMessage::stop_notice, to_enclave);
36 }
37 else
38 {
40 "{}: Shutting down enclave gracefully...", strsignal(signal));
41 RINGBUFFER_WRITE_MESSAGE(AdminMessage::stop, to_enclave);
42 }
43 }
44 };
45
48}
Definition sig_term.h:14
void on_signal(int signal)
Definition sig_term.h:28
ShutdownSignalImpl(ringbuffer::AbstractWriterFactory &writer_factory, bool ignore_first_sigterm_)
Definition sig_term.h:21
Definition proxy.h:50
Definition ring_buffer_types.h:153
#define LOG_INFO_FMT
Definition logger.h:395
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