#pragma once
#include <atomic>
#include <cerrno>
#include <cmath>
#include <cstdlib>
#include <functional>
#include <list>
#include <memory>
#include <optional>
#include <queue>
#include <set>
#include <stack>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <boost/intrusive/list.hpp>
#include <glog/logging.h>
#include <folly/Executor.h>
#include <folly/Function.h>
#include <folly/Memory.h>
#include <folly/Portability.h>
#include <folly/ScopeGuard.h>
#include <folly/Synchronized.h>
#include <folly/container/F14Map.h>
#include <folly/container/F14Set.h>
#include <folly/executors/DrivableExecutor.h>
#include <folly/executors/ExecutionObserver.h>
#include <folly/executors/IOExecutor.h>
#include <folly/executors/QueueObserver.h>
#include <folly/executors/ScheduledExecutor.h>
#include <folly/executors/SequencedExecutor.h>
#include <folly/io/async/AsyncTimeout.h>
#include <folly/io/async/HHWheelTimer.h>
#include <folly/io/async/Request.h>
#include <folly/io/async/TimeoutManager.h>
#include <folly/portability/Event.h>
#include <folly/synchronization/CallOnce.h>
namespace folly {
class EventBaseBackendBase;
Cob;
template <typename Task, typename Consumer>
class EventBaseAtomicNotificationQueue;
template <typename MessageT>
class NotificationQueue;
namespace detail {
class EventBaseLocalBase;
}
template <typename T>
class EventBaseLocal;
class EventBaseObserver { … };
class RequestEventBase : public RequestData { … };
class VirtualEventBase;
class EventBase : public TimeoutManager,
public DrivableExecutor,
public IOExecutor,
public SequencedExecutor,
public ScheduledExecutor,
public GetThreadIdCollector { … };
template <typename T>
void EventBase::runInEventBaseThread(void (*fn)(T*), T* arg) noexcept { … }
template <typename T>
void EventBase::runInEventBaseThreadAlwaysEnqueue(
void (*fn)(T*), T* arg) noexcept { … }
template <typename T>
void EventBase::runInEventBaseThreadAndWait(void (*fn)(T*), T* arg) noexcept { … }
template <typename T>
void EventBase::runImmediatelyOrRunInEventBaseThreadAndWait(
void (*fn)(T*), T* arg) noexcept { … }
template <typename T>
void EventBase::runImmediatelyOrRunInEventBaseThread(
void (*fn)(T*), T* arg) noexcept { … }
}