LCOV - code coverage report
Current view: top level - envoy/server - fatal_action_config.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 0 1 0.0 %
Date: 2024-01-05 06:35:25 Functions: 0 1 0.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include <memory>
       4             : #include <vector>
       5             : 
       6             : #include "envoy/common/pure.h"
       7             : #include "envoy/config/bootstrap/v3/bootstrap.pb.h"
       8             : #include "envoy/config/typed_config.h"
       9             : #include "envoy/event/dispatcher.h"
      10             : #include "envoy/protobuf/message_validator.h"
      11             : #include "envoy/server/instance.h"
      12             : 
      13             : namespace Envoy {
      14             : namespace Server {
      15             : namespace Configuration {
      16             : 
      17             : class FatalAction {
      18             : public:
      19             :   virtual ~FatalAction() = default;
      20             :   /**
      21             :    * Callback function to run when Envoy is crashing.
      22             :    * @param tracked_objects a span of objects Envoy was working on when Envoy started crashing.
      23             :    */
      24             :   virtual void run(absl::Span<const ScopeTrackedObject* const> tracked_objects) PURE;
      25             : 
      26             :   /**
      27             :    * @return whether the action is async-signal-safe.
      28             :    * See man 7 signal-safety for the definition of async-signal-safe.
      29             :    */
      30             :   virtual bool isAsyncSignalSafe() const PURE;
      31             : };
      32             : 
      33             : using FatalActionPtr = std::unique_ptr<FatalAction>;
      34             : 
      35             : /**
      36             :  * Implemented by each custom FatalAction and registered via Registry::registerFactory()
      37             :  * or the convenience class RegisterFactory.
      38             :  */
      39             : class FatalActionFactory : public Config::TypedFactory {
      40             : public:
      41             :   ~FatalActionFactory() override = default;
      42             : 
      43             :   /**
      44             :    * Creates a particular FatalAction implementation.
      45             :    *
      46             :    * @param config supplies the configuration for the action.
      47             :    * @param context supplies the GuardDog Action's context.
      48             :    * @return FatalActionsPtr the FatalActions object.
      49             :    */
      50             :   virtual FatalActionPtr
      51             :   createFatalActionFromProto(const envoy::config::bootstrap::v3::FatalAction& config,
      52             :                              Instance* server) PURE;
      53             : 
      54           0 :   std::string category() const override { return "envoy.fatal_action"; }
      55             : };
      56             : 
      57             : } // namespace Configuration
      58             : } // namespace Server
      59             : } // namespace Envoy

Generated by: LCOV version 1.15