estd: add TypeErasedFunctor template class
FifoQueueBase: implement internal Functor type as alias for
estd::TypeErasedFunctor
add SemaphoreFunctor - an alias for estd::TypeErasedFunctor
add SemaphoreWaitFunctor class
FifoQueueBase: use polymorphic SemaphoreFunctor to "wait" for semaphore
in FifoQueueBase::popPushImplementation()
FifoQueueBase: pass reference to SemaphoreFunctor from the "top-level"
functions (FifoQueueBase::pop(), FifoQueueBase::push()) to
"middle-level" functions (FifoQueueBase::popImplementation(),
FifoQueueBase::pushImplementation())
FifoQueueBase: split FifoQueueBase::pop() into "outer" part - which only
builds the SemaphoreFunctor for waiting, and the "inner" part
(FifoQueueBase::popInternal()) - which builds the Functor object which
does the "popping"
FifoQueueBase: split FifoQueueBase::push(const T&) into "outer" part -
which only builds the SemaphoreFunctor for waiting, and the "inner" part
(FifoQueueBase::pushInternal(const T&)) - which builds the Functor
object which does the "pushing" via copy
FifoQueueBase: split FifoQueueBase::push(T&&) into "outer" part - which
only builds the SemaphoreFunctor for waiting, and the "inner" part
(FifoQueueBase::pushInternal(T&&)) - which builds the Functor object
which does the "pushing" via move
add SemaphoreTryWaitFunctor class
FifoQueueBase: add FifoQueueBase::tryPop()
FifoQueue: add FifoQueue::tryPop()
FifoQueueBase: add FifoQueueBase::tryPush(const T&)
FifoQueue: add FifoQueue::tryPush(const T&)
FifoQueueBase: add FifoQueueBase::tryPush(T&&)
FifoQueue: add FifoQueue::tryPush(T&&)
add SemaphoreTryWaitForFunctor class
FifoQueueBase: add FifoQueueBase::tryPopFor()
FifoQueue: add FifoQueue::tryPopFor()
FifoQueueBase: add FifoQueueBase::tryPushFor(TickClock::duration, const
T&)