#include <folly/fibers/FiberManagerInternal.h>
#include <folly/fibers/LoopController.h>
#include <folly/io/async/EventBase.h>
+#include <folly/io/async/VirtualEventBase.h>
#include <atomic>
#include <memory>
namespace folly {
namespace fibers {
-class EventBaseLoopController : public LoopController {
+template <typename EventBaseT>
+class EventBaseLoopControllerT : public LoopController {
public:
- explicit EventBaseLoopController();
- ~EventBaseLoopController();
+ explicit EventBaseLoopControllerT();
+ ~EventBaseLoopControllerT();
/**
* Attach EventBase after LoopController was created.
*/
- void attachEventBase(folly::EventBase& eventBase);
+ void attachEventBase(EventBaseT& eventBase);
- folly::EventBase* getEventBase() {
+ EventBaseT* getEventBase() {
return eventBase_;
}
private:
class ControllerCallback : public folly::EventBase::LoopCallback {
public:
- explicit ControllerCallback(EventBaseLoopController& controller)
+ explicit ControllerCallback(EventBaseLoopControllerT& controller)
: controller_(controller) {}
void runLoopCallback() noexcept override {
}
private:
- EventBaseLoopController& controller_;
+ EventBaseLoopControllerT& controller_;
};
class DestructionCallback : public folly::EventBase::LoopCallback {
};
bool awaitingScheduling_{false};
- folly::EventBase* eventBase_{nullptr};
- folly::EventBase::LoopKeepAlive eventBaseKeepAlive_;
+ EventBaseT* eventBase_{nullptr};
+ typename EventBaseT::LoopKeepAlive eventBaseKeepAlive_;
ControllerCallback callback_;
DestructionCallback destructionCallback_;
FiberManager* fm_{nullptr};
friend class FiberManager;
};
+
+using EventBaseLoopController = EventBaseLoopControllerT<folly::EventBase>;
}
} // folly::fibers