move futures/QueuedImmediateExecutor to executors/QueuedImmediateExecutor
authorJames Sedgwick <jsedgwick@fb.com>
Wed, 18 Oct 2017 23:32:35 +0000 (16:32 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Wed, 18 Oct 2017 23:44:33 +0000 (16:44 -0700)
Summary: as above

Reviewed By: yfeldblum

Differential Revision: D6076779

fbshipit-source-id: 4c223ab9fce3be8544f6f807781c3d0a99b61dad

folly/Makefile.am
folly/executors/QueuedImmediateExecutor.cpp [new file with mode: 0644]
folly/executors/QueuedImmediateExecutor.h [new file with mode: 0644]
folly/futures/QueuedImmediateExecutor.cpp [deleted file]
folly/futures/QueuedImmediateExecutor.h [deleted file]
folly/futures/test/ExecutorTest.cpp

index b9adb7f..ce29ac0 100644 (file)
@@ -106,6 +106,7 @@ nobase_follyinclude_HEADERS = \
        executors/ThreadPoolExecutor.h \
        executors/ThreadedExecutor.h \
        executors/UnboundedBlockingQueue.h \
+       executors/QueuedImmediateExecutor.h \
        Demangle.h \
        DiscriminatedPtr.h \
        DynamicConverter.h \
@@ -218,7 +219,6 @@ nobase_follyinclude_HEADERS = \
        futures/ManualExecutor.h \
        futures/Promise-inl.h \
        futures/Promise.h \
-       futures/QueuedImmediateExecutor.h \
        futures/SharedPromise.h \
        futures/SharedPromise-inl.h \
        futures/ThreadWheelTimekeeper.h \
@@ -505,7 +505,6 @@ libfolly_la_SOURCES = \
        futures/Future.cpp \
        futures/FutureException.cpp \
        futures/ManualExecutor.cpp \
-       futures/QueuedImmediateExecutor.cpp \
        futures/ThreadWheelTimekeeper.cpp \
        futures/test/TestExecutor.cpp \
        executors/CPUThreadPoolExecutor.cpp \
@@ -515,6 +514,7 @@ libfolly_la_SOURCES = \
        executors/SerialExecutor.cpp \
        executors/ThreadPoolExecutor.cpp \
        executors/ThreadedExecutor.cpp \
+       executors/QueuedImmediateExecutor.cpp \
        experimental/hazptr/hazptr.cpp \
        experimental/hazptr/memory_resource.cpp \
        GroupVarint.cpp \
diff --git a/folly/executors/QueuedImmediateExecutor.cpp b/folly/executors/QueuedImmediateExecutor.cpp
new file mode 100644 (file)
index 0000000..1dbdb5c
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2017 Facebook, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <folly/executors/QueuedImmediateExecutor.h>
+#include <folly/ThreadLocal.h>
+#include <queue>
+
+namespace folly {
+
+void QueuedImmediateExecutor::addStatic(Func callback) {
+  static folly::ThreadLocal<std::queue<Func>> q_;
+
+  if (q_->empty()) {
+    q_->push(std::move(callback));
+    while (!q_->empty()) {
+      q_->front()();
+      q_->pop();
+    }
+  } else {
+    q_->push(std::move(callback));
+  }
+}
+
+} // namespace
diff --git a/folly/executors/QueuedImmediateExecutor.h b/folly/executors/QueuedImmediateExecutor.h
new file mode 100644 (file)
index 0000000..b98047a
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2017 Facebook, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <folly/Executor.h>
+
+namespace folly {
+
+/**
+ * Runs inline like InlineExecutor, but with a queue so that any tasks added
+ * to this executor by one of its own callbacks will be queued instead of
+ * executed inline (nested). This is usually better behavior than Inline.
+ */
+class QueuedImmediateExecutor : public Executor {
+ public:
+  /// There's really only one queue per thread, no matter how many
+  /// QueuedImmediateExecutor objects you may have.
+  static void addStatic(Func);
+
+  void add(Func func) override {
+    addStatic(std::move(func));
+  }
+};
+
+} // namespace folly
diff --git a/folly/futures/QueuedImmediateExecutor.cpp b/folly/futures/QueuedImmediateExecutor.cpp
deleted file mode 100644 (file)
index 204d424..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2017 Facebook, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <folly/futures/QueuedImmediateExecutor.h>
-#include <folly/ThreadLocal.h>
-#include <queue>
-
-namespace folly {
-
-void QueuedImmediateExecutor::addStatic(Func callback) {
-  static folly::ThreadLocal<std::queue<Func>> q_;
-
-  if (q_->empty()) {
-    q_->push(std::move(callback));
-    while (!q_->empty()) {
-      q_->front()();
-      q_->pop();
-    }
-  } else {
-    q_->push(std::move(callback));
-  }
-}
-
-} // namespace
diff --git a/folly/futures/QueuedImmediateExecutor.h b/folly/futures/QueuedImmediateExecutor.h
deleted file mode 100644 (file)
index b98047a..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2017 Facebook, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include <folly/Executor.h>
-
-namespace folly {
-
-/**
- * Runs inline like InlineExecutor, but with a queue so that any tasks added
- * to this executor by one of its own callbacks will be queued instead of
- * executed inline (nested). This is usually better behavior than Inline.
- */
-class QueuedImmediateExecutor : public Executor {
- public:
-  /// There's really only one queue per thread, no matter how many
-  /// QueuedImmediateExecutor objects you may have.
-  static void addStatic(Func);
-
-  void add(Func func) override {
-    addStatic(std::move(func));
-  }
-};
-
-} // namespace folly
index 88679ec..2c201d0 100644 (file)
  */
 
 #include <folly/Baton.h>
+#include <folly/executors/QueuedImmediateExecutor.h>
 #include <folly/futures/Future.h>
 #include <folly/futures/InlineExecutor.h>
 #include <folly/futures/ManualExecutor.h>
-#include <folly/futures/QueuedImmediateExecutor.h>
 #include <folly/portability/GTest.h>
 
+// TODO(jsedgwick) move this test to executors/test/ once the tested executors
+// have all moved
+
 using namespace folly;
 
 TEST(ManualExecutor, runIsStable) {