task_pool#

Include dependency graph for task_pool.h:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "4" [label="functional" tooltip="functional"]
    "18" [label="variant" tooltip="variant"]
    "16" [label="string" tooltip="string"]
    "11" [label="move_by_copy.h" tooltip="move_by_copy.h"]
    "12" [label="utility.h" tooltip="utility.h"]
    "17" [label="string_view" tooltip="string_view"]
    "14" [label="condition_variable" tooltip="condition_variable"]
    "5" [label="future" tooltip="future"]
    "7" [label="optional" tooltip="optional"]
    "10" [label="vector" tooltip="vector"]
    "9" [label="utility" tooltip="utility"]
    "1" [label="src/task_pool.h" tooltip="src/task_pool.h" fillcolor="#BFBFBF"]
    "3" [label="deque" tooltip="deque"]
    "6" [label="mutex" tooltip="mutex"]
    "2" [label="chrono" tooltip="chrono"]
    "8" [label="type_traits" tooltip="type_traits"]
    "13" [label="algorithm" tooltip="algorithm"]
    "15" [label="memory" tooltip="memory"]
    "11" -> "9" [dir=forward tooltip="include"]
    "12" -> "13" [dir=forward tooltip="include"]
    "12" -> "14" [dir=forward tooltip="include"]
    "12" -> "15" [dir=forward tooltip="include"]
    "12" -> "6" [dir=forward tooltip="include"]
    "12" -> "7" [dir=forward tooltip="include"]
    "12" -> "16" [dir=forward tooltip="include"]
    "12" -> "17" [dir=forward tooltip="include"]
    "12" -> "8" [dir=forward tooltip="include"]
    "12" -> "18" [dir=forward tooltip="include"]
    "12" -> "10" [dir=forward tooltip="include"]
    "1" -> "2" [dir=forward tooltip="include"]
    "1" -> "3" [dir=forward tooltip="include"]
    "1" -> "4" [dir=forward tooltip="include"]
    "1" -> "5" [dir=forward tooltip="include"]
    "1" -> "6" [dir=forward tooltip="include"]
    "1" -> "7" [dir=forward tooltip="include"]
    "1" -> "8" [dir=forward tooltip="include"]
    "1" -> "9" [dir=forward tooltip="include"]
    "1" -> "10" [dir=forward tooltip="include"]
    "1" -> "11" [dir=forward tooltip="include"]
    "1" -> "12" [dir=forward tooltip="include"]
}

This graph shows which files directly or indirectly include task_pool.h:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "16" [label="src/upnp.cpp" tooltip="src/upnp.cpp"]
    "14" [label="src/platform/windows/misc.cpp" tooltip="src/platform/windows/misc.cpp"]
    "18" [label="src/platform/macos/misc.mm" tooltip="src/platform/macos/misc.mm"]
    "3" [label="src/thread_pool.h" tooltip="src/thread_pool.h"]
    "2" [label="src/platform/linux/x11grab.cpp" tooltip="src/platform/linux/x11grab.cpp"]
    "10" [label="src/globals.cpp" tooltip="src/globals.cpp"]
    "7" [label="src/globals.h" tooltip="src/globals.h"]
    "4" [label="src/entry_handler.h" tooltip="src/entry_handler.h"]
    "5" [label="src/config.cpp" tooltip="src/config.cpp"]
    "13" [label="src/platform/windows/input.cpp" tooltip="src/platform/windows/input.cpp"]
    "11" [label="src/input.cpp" tooltip="src/input.cpp"]
    "6" [label="src/entry_handler.cpp" tooltip="src/entry_handler.cpp"]
    "1" [label="src/task_pool.h" tooltip="src/task_pool.h" fillcolor="#BFBFBF"]
    "9" [label="src/confighttp.cpp" tooltip="src/confighttp.cpp"]
    "8" [label="src/audio.cpp" tooltip="src/audio.cpp"]
    "15" [label="src/stream.cpp" tooltip="src/stream.cpp"]
    "12" [label="src/main.cpp" tooltip="src/main.cpp"]
    "17" [label="src/video.cpp" tooltip="src/video.cpp"]
    "3" -> "4" [dir=back tooltip="include"]
    "3" -> "7" [dir=back tooltip="include"]
    "3" -> "11" [dir=back tooltip="include"]
    "7" -> "8" [dir=back tooltip="include"]
    "7" -> "9" [dir=back tooltip="include"]
    "7" -> "6" [dir=back tooltip="include"]
    "7" -> "10" [dir=back tooltip="include"]
    "7" -> "11" [dir=back tooltip="include"]
    "7" -> "12" [dir=back tooltip="include"]
    "7" -> "2" [dir=back tooltip="include"]
    "7" -> "13" [dir=back tooltip="include"]
    "7" -> "14" [dir=back tooltip="include"]
    "7" -> "15" [dir=back tooltip="include"]
    "7" -> "16" [dir=back tooltip="include"]
    "7" -> "17" [dir=back tooltip="include"]
    "4" -> "5" [dir=back tooltip="include"]
    "4" -> "6" [dir=back tooltip="include"]
    "4" -> "7" [dir=back tooltip="include"]
    "4" -> "12" [dir=back tooltip="include"]
    "4" -> "18" [dir=back tooltip="include"]
    "4" -> "14" [dir=back tooltip="include"]
    "1" -> "2" [dir=back tooltip="include"]
    "1" -> "3" [dir=back tooltip="include"]
}

todo

namespace task_pool_util#
template<class Function>
class _Impl : public task_pool_util::_ImplBase#

Inheritence diagram for task_pool_util::_Impl:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="task_pool_util::_Impl< Function >" tooltip="task_pool_util::_Impl< Function >" fillcolor="#BFBFBF"]
    "2" [label="task_pool_util::_ImplBase" tooltip="task_pool_util::_ImplBase"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
}

Collaboration diagram for task_pool_util::_Impl:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="task_pool_util::_Impl< Function >" tooltip="task_pool_util::_Impl< Function >" fillcolor="#BFBFBF"]
    "2" [label="task_pool_util::_ImplBase" tooltip="task_pool_util::_ImplBase"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
}

Public Functions

inline _Impl(Function &&f)#
inline virtual void run() override#

Private Members

Function _func#
class _ImplBase#

Inheritence diagram for task_pool_util::_ImplBase:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "2" [label="task_pool_util::_Impl< Function >" tooltip="task_pool_util::_Impl< Function >"]
    "1" [label="task_pool_util::_ImplBase" tooltip="task_pool_util::_ImplBase" fillcolor="#BFBFBF"]
    "2" -> "1" [dir=forward tooltip="public-inheritance"]
}

Subclassed by task_pool_util::_Impl< Function >

Public Functions

virtual void run() = 0#
inline virtual ~_ImplBase() = default#
class TaskPool#

Inheritence diagram for task_pool_util::TaskPool:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "2" [label="thread_pool_util::ThreadPool" tooltip="thread_pool_util::ThreadPool"]
    "1" [label="task_pool_util::TaskPool" tooltip="task_pool_util::TaskPool" fillcolor="#BFBFBF"]
    "2" -> "1" [dir=forward tooltip="public-inheritance"]
}

Subclassed by thread_pool_util::ThreadPool

Public Types

typedef std::unique_ptr<_ImplBase> __task#
typedef std::chrono::steady_clock::time_point __time_point#
typedef _ImplBase *task_id_t#

Public Functions

inline bool cancel(task_id_t task_id)#
template<class X, class Y>
inline void delay(task_id_t task_id, std::chrono::duration<X, Y> duration)#
Parameters:
  • task_id – The id of the task to delay.

  • duration – The delay before executing the task.

inline std::optional<__time_point> next()#
inline TaskPool &operator=(TaskPool &&other) noexcept#
inline std::optional<__task> pop()#
inline std::optional<std::pair<__time_point, __task>> pop(task_id_t task_id)#
template<class Function, class ...Args>
inline auto push(Function &&newTask, Args&&... args)#
template<class Function, class X, class Y, class ...Args>
inline auto pushDelayed(Function &&newTask, std::chrono::duration<X, Y> duration, Args&&... args)#
Returns:

an id to potentially delay the task.

inline void pushDelayed(std::pair<__time_point, __task> &&task)#
inline bool ready()#
TaskPool() = default#
inline TaskPool(TaskPool &&other) noexcept#

Protected Attributes

std::mutex _task_mutex#
std::deque<__task> _tasks#
std::vector<std::pair<__time_point, __task>> _timer_tasks#

Private Functions

template<class Function>
inline std::unique_ptr<_ImplBase> toRunnable(Function &&f)#
template<class R>
class timer_task_t#

Collaboration diagram for task_pool_util::TaskPool::timer_task_t:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="task_pool_util::TaskPool::timer_task_t< R >" tooltip="task_pool_util::TaskPool::timer_task_t< R >" fillcolor="#BFBFBF"]
    "2" [label="task_pool_util::_ImplBase" tooltip="task_pool_util::_ImplBase"]
    "1" -> "2" [dir=forward tooltip="usage"]
}

Public Functions

inline timer_task_t(task_id_t task_id, std::future<R> &future)#

Public Members

std::future<R> future#
task_id_t task_id#