# Processor.hpp
This File On Github
Ask A Question
API: latest
module: oatpp
#include "oatpp/core/async/Processor.hpp"
# Processor
Asynchronous Processor.
Responsible for processing and managing multiple Coroutines. Do not use bare processor to run coroutines. Use oatpp::async::Executor instead;.
namespace oatpp { namespace async {
class Processor {}
}}
# Methods
Return Type | Name | Summary |
---|---|---|
void | addWorker | Add dedicated co-worker to processor. |
void | pushOneTask | Push one Coroutine back to processor. |
void | pushTasks | Push list of Coroutines back to processor. |
void | execute | Execute Coroutine. |
void | waitForTasks | Sleep and wait for tasks. |
bool | iterate | Iterate Coroutines. |
void | stop | Stop waiting for new tasks. |
v_int32 | getTasksCount | Get number of all not-finished tasks including tasks rescheduled for processor's co-workers. |
# Processor::addWorker
Add dedicated co-worker to processor.
- @param worker - oatpp::async::worker::Worker.
void addWorker(const std::shared_ptr<worker::Worker>& worker)
# Processor::pushOneTask
Push one Coroutine back to processor.
- @param coroutine - oatpp::async::CoroutineHandle previously popped-out(rescheduled to coworker) from this processor.
void pushOneTask(CoroutineHandle* coroutine)
# Processor::pushTasks
Push list of Coroutines back to processor.
- @param tasks - oatpp::async::utils::FastQueue of oatpp::async::CoroutineHandle previously popped-out(rescheduled to coworker) from this processor.
void pushTasks(utils::FastQueue<CoroutineHandle>& tasks)
# Processor::execute
Execute Coroutine.
- @tparam CoroutineType - type of coroutine to execute.
- @tparam Args - types of arguments to be passed to Coroutine constructor.
- @param params - actual arguments to be passed to Coroutine constructor.
template<typename CoroutineType, typename ... Args>
void execute(Args... params)
# Processor::waitForTasks
Sleep and wait for tasks.
void waitForTasks()
# Processor::iterate
Iterate Coroutines.
- @param numIterations - number of iterations.
- @return -
true
if there are active Coroutines.
bool iterate(v_int32 numIterations)
# Processor::stop
Stop waiting for new tasks.
void stop()
# Processor::getTasksCount
Get number of all not-finished tasks including tasks rescheduled for processor's co-workers.
- @return - number of not-finished tasks.
v_int32 getTasksCount()