Baton support for wait-options
[folly.git] / folly / Executor.h
index a66777f4a85840133d4b318ab38ea5f11a08c5c0..a2ac0d6358089e7f4330f626180f125ebdb78c49 100644 (file)
@@ -28,7 +28,8 @@ using Func = Function<void()>;
 /// threadsafe.
 class Executor {
  public:
-  virtual ~Executor() = default;
+  // Workaround for a linkage problem with explicitly defaulted dtor t22914621
+  virtual ~Executor() {}
 
   /// Enqueue a function to executed by this executor. This and all
   /// variants must be threadsafe.
@@ -46,16 +47,6 @@ class Executor {
   static const int8_t MID_PRI = 0;
   static const int8_t HI_PRI  = SCHAR_MAX;
 
-  /// A convenience function for shared_ptr to legacy functors.
-  ///
-  /// Sometimes you have a functor that is move-only, and therefore can't be
-  /// converted to a std::function (e.g. std::packaged_task). In that case,
-  /// wrap it in a shared_ptr (or maybe folly::MoveWrapper) and use this.
-  template <class P>
-  void addPtr(P fn) {
-    this->add([fn]() mutable { (*fn)(); });
-  }
-
   class KeepAlive {
    public:
     KeepAlive() {}
@@ -68,6 +59,10 @@ class Executor {
       return executor_ != nullptr;
     }
 
+    Executor* get() const {
+      return executor_.get();
+    }
+
    private:
     friend class Executor;
     explicit KeepAlive(folly::Executor* executor) : executor_(executor) {}
@@ -90,6 +85,7 @@ class Executor {
   }
 
  protected:
+  virtual void keepAliveAcquire();
   virtual void keepAliveRelease();
 
   KeepAlive makeKeepAlive() {