ThreadLocalDetail: OSX fixes
[folly.git] / folly / Executor.h
index 175a7b09e0d6efec9b2ffaf7b5464117ba7094e3..168b6595173516c2e62793affa7125eebbf82d77 100644 (file)
@@ -17,7 +17,9 @@
 #pragma once
 
 #include <atomic>
+#include <climits>
 #include <functional>
+#include <stdexcept>
 
 namespace folly {
 
@@ -33,6 +35,21 @@ class Executor {
   /// variants must be threadsafe.
   virtual void add(Func) = 0;
 
+  /// Enqueue a function with a given priority, where 0 is the medium priority
+  /// This is up to the implementation to enforce
+  virtual void addWithPriority(Func, int8_t /*priority*/) {
+    throw std::runtime_error(
+        "addWithPriority() is not implemented for this Executor");
+  }
+
+  virtual uint8_t getNumPriorities() const {
+    return 1;
+  }
+
+  static const int8_t LO_PRI  = SCHAR_MIN;
+  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