Coverage Report

Created: 2024-09-19 09:45

/proc/self/cwd/source/common/signal/fatal_action.h
Line
Count
Source (jump to first uncovered line)
1
#pragma once
2
3
#include <ostream>
4
5
#include "envoy/common/pure.h"
6
#include "envoy/server/fatal_action_config.h"
7
#include "envoy/thread/thread.h"
8
9
namespace Envoy {
10
namespace FatalAction {
11
12
using FatalActionPtrList = std::list<Server::Configuration::FatalActionPtr>;
13
14
// Status when trying to run the Fatal Actions.
15
enum class Status {
16
  Success,
17
18
  // We either haven't set up the Fatal Action manager, or we unregistered it
19
  // as the server terminated.
20
  ActionManagerUnset,
21
22
  // Another thread beat us to running the Fatal Actions.
23
  RunningOnAnotherThread,
24
25
  // We have already ran those actions on this thread.
26
  AlreadyRanOnThisThread,
27
};
28
29
// A simple class which manages the Fatal Actions registered via the
30
// extension point.
31
class FatalActionManager {
32
public:
33
  FatalActionManager(FatalActionPtrList safe_actions, FatalActionPtrList unsafe_actions,
34
                     Thread::ThreadFactory& thread_factory)
35
      : safe_actions_(std::move(safe_actions)), unsafe_actions_(std::move(unsafe_actions)),
36
4.45k
        thread_factory_(thread_factory) {}
37
38
0
  const FatalActionPtrList& getSafeActions() const { return safe_actions_; }
39
0
  const FatalActionPtrList& getUnsafeActions() const { return unsafe_actions_; }
40
0
  Thread::ThreadFactory& getThreadFactory() const { return thread_factory_; }
41
42
private:
43
  FatalActionPtrList safe_actions_;
44
  FatalActionPtrList unsafe_actions_;
45
  Thread::ThreadFactory& thread_factory_;
46
};
47
48
} // namespace FatalAction
49
} // namespace Envoy