/*
- * Copyright 2017 Facebook, Inc.
+ * Copyright 2014-present Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#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 {
-class EventBase;
-}
-
namespace folly {
namespace fibers {
-template <typename EventBaseT>
-class EventBaseLoopControllerT : public LoopController {
+class EventBaseLoopController : public LoopController {
public:
- explicit EventBaseLoopControllerT();
- ~EventBaseLoopControllerT();
+ explicit EventBaseLoopController();
+ ~EventBaseLoopController() override;
/**
* Attach EventBase after LoopController was created.
*/
- void attachEventBase(EventBaseT& eventBase);
+ void attachEventBase(EventBase& eventBase);
+ void attachEventBase(VirtualEventBase& eventBase);
- EventBaseT* getEventBase() {
+ VirtualEventBase* getEventBase() {
return eventBase_;
}
private:
class ControllerCallback : public folly::EventBase::LoopCallback {
public:
- explicit ControllerCallback(EventBaseLoopControllerT& controller)
+ explicit ControllerCallback(EventBaseLoopController& controller)
: controller_(controller) {}
void runLoopCallback() noexcept override {
}
private:
- EventBaseLoopControllerT& controller_;
+ EventBaseLoopController& controller_;
};
class DestructionCallback : public folly::EventBase::LoopCallback {
public:
DestructionCallback() : alive_(new int(42)) {}
- ~DestructionCallback() {
+ ~DestructionCallback() override {
reset();
}
};
bool awaitingScheduling_{false};
- EventBaseT* eventBase_{nullptr};
- typename EventBaseT::LoopKeepAlive eventBaseKeepAlive_;
+ VirtualEventBase* eventBase_{nullptr};
+ Executor::KeepAlive eventBaseKeepAlive_;
ControllerCallback callback_;
DestructionCallback destructionCallback_;
FiberManager* fm_{nullptr};
friend class FiberManager;
};
-
-using EventBaseLoopController = EventBaseLoopControllerT<folly::EventBase>;
-}
-} // folly::fibers
+} // namespace fibers
+} // namespace folly
#include "EventBaseLoopController-inl.h"