Coverage Report

Created: 2024-09-19 09:45

/proc/self/cwd/source/common/event/deferred_task.h
Line
Count
Source (jump to first uncovered line)
1
#pragma once
2
3
#include <memory>
4
5
#include "envoy/event/dispatcher.h"
6
7
namespace Envoy {
8
namespace Event {
9
10
/**
11
 * A util to schedule a task to run in a future event loop cycle. One of the use cases is to run the
12
 * task after the previously DeferredDeletable objects are destroyed.
13
 */
14
class DeferredTaskUtil {
15
private:
16
  class DeferredTask : public DeferredDeletable {
17
  public:
18
0
    DeferredTask(std::function<void()>&& task) : task_(std::move(task)) {}
19
0
    ~DeferredTask() override { task_(); }
20
21
  private:
22
    std::function<void()> task_;
23
  };
24
25
public:
26
  /**
27
   * Submits an item for run deferred delete.
28
   */
29
0
  static void deferredRun(Dispatcher& dispatcher, std::function<void()>&& func) {
30
0
    dispatcher.deferredDelete(std::make_unique<DeferredTask>(std::move(func)));
31
0
  }
32
};
33
34
} // namespace Event
35
} // namespace Envoy