tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

delayed_task_handle.h (1486B)


      1 // Copyright 2021 The Chromium Authors
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef BASE_TASK_DELAYED_TASK_HANDLE_H_
      6 #define BASE_TASK_DELAYED_TASK_HANDLE_H_
      7 
      8 #include <memory>
      9 
     10 #include "base/base_export.h"
     11 
     12 namespace base {
     13 
     14 // A handle to a delayed task which can be used to cancel the posted task. Not
     15 // thread-safe, can only be held and invoked from the posting sequence.
     16 class BASE_EXPORT DelayedTaskHandle {
     17 public:
     18  // The delegate that allows each SequencedTaskRunners to have different
     19  // implementations.
     20  class Delegate {
     21   public:
     22    virtual ~Delegate() = default;
     23 
     24    // Returns true if the task handle is valid.
     25    virtual bool IsValid() const = 0;
     26 
     27    // Cancels the task. A canceled task, whether removed from the underlying
     28    // queue or only marked as canceled, will never be Run().
     29    virtual void CancelTask() = 0;
     30  };
     31 
     32  // Construct a default, invalid, task handle.
     33  DelayedTaskHandle();
     34 
     35  // Construct a valid task handle with the specified |delegate|.
     36  explicit DelayedTaskHandle(std::unique_ptr<Delegate> delegate);
     37 
     38  ~DelayedTaskHandle();
     39 
     40  DelayedTaskHandle(DelayedTaskHandle&&);
     41  DelayedTaskHandle& operator=(DelayedTaskHandle&&);
     42 
     43  // Returns true if the task handle is valid.
     44  bool IsValid() const;
     45 
     46  // Cancels the task.
     47  void CancelTask();
     48 
     49 private:
     50  std::unique_ptr<Delegate> delegate_;
     51 };
     52 
     53 }  // namespace base
     54 
     55 #endif  // BASE_TASK_DELAYED_TASK_HANDLE_H_