proxygen
folly::MemoryIdlerTimeout Class Reference
Inheritance diagram for folly::MemoryIdlerTimeout:
folly::AsyncTimeout folly::EventBase::LoopCallback

Public Member Functions

 MemoryIdlerTimeout (EventBase *b)
 
void timeoutExpired () noexceptoverride
 
void runLoopCallback () noexceptoverride
 
- Public Member Functions inherited from folly::AsyncTimeout
 AsyncTimeout (TimeoutManager *timeoutManager)
 
 AsyncTimeout (EventBase *eventBase)
 
 AsyncTimeout (TimeoutManager *timeoutManager, InternalEnum internal)
 
 AsyncTimeout (EventBase *eventBase, InternalEnum internal)
 
 AsyncTimeout ()
 
virtual ~AsyncTimeout ()
 
bool scheduleTimeout (uint32_t milliseconds)
 
bool scheduleTimeout (TimeoutManager::timeout_type timeout)
 
void cancelTimeout ()
 
bool isScheduled () const
 
void attachTimeoutManager (TimeoutManager *timeoutManager, InternalEnum internal=InternalEnum::NORMAL)
 
void attachEventBase (EventBase *eventBase, InternalEnum internal=InternalEnum::NORMAL)
 
void detachTimeoutManager ()
 
void detachEventBase ()
 
const TimeoutManagergetTimeoutManager ()
 
struct event * getEvent ()
 
- Public Member Functions inherited from folly::EventBase::LoopCallback
virtual ~LoopCallback ()=default
 
void cancelLoopCallback ()
 
bool isLoopCallbackScheduled () const
 

Private Attributes

EventBasebase_
 
bool idled {false}
 

Additional Inherited Members

- Public Types inherited from folly::AsyncTimeout
typedef TimeoutManager::InternalEnum InternalEnum
 
- Static Public Member Functions inherited from folly::AsyncTimeout
template<typename TCallback >
static std::unique_ptr< AsyncTimeoutmake (TimeoutManager &manager, TCallback &&callback)
 
template<typename TCallback >
static std::unique_ptr< AsyncTimeoutschedule (TimeoutManager::timeout_type timeout, TimeoutManager &manager, TCallback &&callback)
 

Detailed Description

Definition at line 36 of file IOThreadPoolExecutor.cpp.

Constructor & Destructor Documentation

folly::MemoryIdlerTimeout::MemoryIdlerTimeout ( EventBase b)
inlineexplicit

Definition at line 38 of file IOThreadPoolExecutor.cpp.

Member Function Documentation

void folly::MemoryIdlerTimeout::runLoopCallback ( )
inlineoverridevirtualnoexcept

Implements folly::EventBase::LoopCallback.

Definition at line 44 of file IOThreadPoolExecutor.cpp.

References base_, count, folly::detail::MemoryIdler::defaultIdleTimeout, folly::detail::MemoryIdler::flushLocalMallocCaches(), folly::detail::MemoryIdler::getVariationTimeout(), idled, folly::detail::MemoryIdler::kDefaultStackToRetain, folly::AtomicStruct< T, Atom >::load(), folly::EventBase::runBeforeLoop(), folly::AsyncTimeout::scheduleTimeout(), and folly::detail::MemoryIdler::unmapUnusedStack().

44  {
45  if (idled) {
48 
49  idled = false;
50  } else {
51  std::chrono::steady_clock::duration idleTimeout =
52  MemoryIdler::defaultIdleTimeout.load(std::memory_order_acquire);
53 
54  idleTimeout = MemoryIdler::getVariationTimeout(idleTimeout);
55 
56  scheduleTimeout(static_cast<uint32_t>(
57  std::chrono::duration_cast<std::chrono::milliseconds>(idleTimeout)
58  .count()));
59  }
60 
61  // reschedule this callback for the next event loop.
62  base_->runBeforeLoop(this);
63  }
static void unmapUnusedStack(size_t retain=kDefaultStackToRetain)
static IdleTime getVariationTimeout(IdleTime const &idleTimeout=defaultIdleTimeout.load(std::memory_order_acquire), float timeoutVariationFrac=0.5)
Definition: MemoryIdler.h:70
T load(std::memory_order mo=std::memory_order_seq_cst) const noexcept
Definition: AtomicStruct.h:141
int * count
static AtomicStruct< std::chrono::steady_clock::duration > defaultIdleTimeout
Definition: MemoryIdler.h:64
bool scheduleTimeout(uint32_t milliseconds)
void runBeforeLoop(LoopCallback *callback)
Definition: EventBase.cpp:548
static void flushLocalMallocCaches()
Definition: MemoryIdler.cpp:41
void folly::MemoryIdlerTimeout::timeoutExpired ( )
inlineoverridevirtualnoexcept

timeoutExpired() is invoked when the timeout period has expired.

Implements folly::AsyncTimeout.

Definition at line 40 of file IOThreadPoolExecutor.cpp.

References idled.

40  {
41  idled = true;
42  }

Member Data Documentation

EventBase* folly::MemoryIdlerTimeout::base_
private

Definition at line 66 of file IOThreadPoolExecutor.cpp.

Referenced by runLoopCallback().

bool folly::MemoryIdlerTimeout::idled {false}
private

Definition at line 67 of file IOThreadPoolExecutor.cpp.

Referenced by runLoopCallback(), and timeoutExpired().


The documentation for this class was generated from the following file: