#include <folly/io/async/EventBase.h>
#include <folly/ThreadName.h>
-#include <folly/io/async/EventBaseLocal.h>
#include <folly/io/async/NotificationQueue.h>
#include <boost/static_assert.hpp>
event_base_free(evb_);
}
-#if !defined(ANDROID) && !defined(__ANDROID__) && !defined(__APPLE__)
{
std::lock_guard<std::mutex> lock(localStorageMutex_);
for (auto storage : localStorageToDtor_) {
storage->onEventBaseDestruction(*this);
}
}
-#endif
VLOG(5) << "EventBase(): Destroyed.";
}
template <typename MessageT>
class NotificationQueue;
-#if !defined(ANDROID) && !defined(__ANDROID__) && !defined(__APPLE__)
namespace detail {
class EventBaseLocalBase;
+
+class EventBaseLocalBaseBase {
+ public:
+ virtual void onEventBaseDestruction(EventBase& evb) = 0;
+ virtual ~EventBaseLocalBaseBase() = default;
+};
}
template <typename T>
class EventBaseLocal;
-#endif
class EventBaseObserver {
public:
// allow runOnDestruction() to be called from any threads
std::mutex onDestructionCallbacksMutex_;
-#if !defined(ANDROID) && !defined(__ANDROID__) && !defined(__APPLE__)
// see EventBaseLocal
friend class detail::EventBaseLocalBase;
template <typename T> friend class EventBaseLocal;
std::mutex localStorageMutex_;
std::unordered_map<uint64_t, std::shared_ptr<void>> localStorage_;
- std::unordered_set<detail::EventBaseLocalBase*> localStorageToDtor_;
-#endif
+ std::unordered_set<detail::EventBaseLocalBaseBase*> localStorageToDtor_;
};
} // folly
* limitations under the License.
*/
-#if !defined(ANDROID) && !defined(__ANDROID__) && !defined(__APPLE__)
-
#include <folly/io/async/EventBaseLocal.h>
#include <atomic>
#include <thread>
std::atomic<uint64_t> EventBaseLocalBase::keyCounter_{0};
}}
-
-#endif // !__ANDROID__ && !ANDROID && !__APPLE__
#pragma once
-#if !defined(ANDROID) && !defined(__ANDROID__) && !defined(__APPLE__)
-
#include <boost/noncopyable.hpp>
#include <folly/Synchronized.h>
#include <folly/io/async/EventBase.h>
namespace detail {
-class EventBaseLocalBase : boost::noncopyable {
+class EventBaseLocalBase : public EventBaseLocalBaseBase, boost::noncopyable {
public:
EventBaseLocalBase() {}
virtual ~EventBaseLocalBase();
void erase(EventBase& evb);
- void onEventBaseDestruction(EventBase& evb);
+ void onEventBaseDestruction(EventBase& evb) override;
protected:
void setVoid(EventBase& evb, std::shared_ptr<void>&& ptr);
}
-
-#endif // !__ANDROID__ && !ANDROID && !__APPLE__