Skip to content
Snippets Groups Projects
Commit 2ef0a8af authored by Olivier Dion's avatar Olivier Dion Committed by Sébastien Blin
Browse files

manager: Add execution context to scheduled executor

Change-Id: Icedfd7e3cd3765cf900e1fac26ad0106ba8a5cb3
parent 1f1e6014
Branches
No related tags found
No related merge requests found
......@@ -1657,21 +1657,25 @@ Manager::ioContext() const
}
void
Manager::addTask(std::function<bool()>&& task)
Manager::addTask(std::function<bool()>&& task, const char* filename, uint32_t linum)
{
pimpl_->scheduler_.scheduleAtFixedRate(std::move(task), std::chrono::milliseconds(30));
pimpl_->scheduler_.scheduleAtFixedRate(std::move(task), std::chrono::milliseconds(30),
filename, linum);
}
std::shared_ptr<Task>
Manager::scheduleTask(std::function<void()>&& task, std::chrono::steady_clock::time_point when)
Manager::scheduleTask(std::function<void()>&& task, std::chrono::steady_clock::time_point when,
const char* filename, uint32_t linum)
{
return pimpl_->scheduler_.schedule(std::move(task), when);
return pimpl_->scheduler_.schedule(std::move(task), when, filename, linum);
}
std::shared_ptr<Task>
Manager::scheduleTaskIn(std::function<void()>&& task, std::chrono::steady_clock::duration timeout)
Manager::scheduleTaskIn(std::function<void()>&& task, std::chrono::steady_clock::duration timeout,
const char* filename, uint32_t linum)
{
return pimpl_->scheduler_.scheduleIn(std::move(task), timeout);
return pimpl_->scheduler_.scheduleIn(std::move(task), timeout,
filename, linum);
}
// Must be invoked periodically by a timer from the main event loop
......
......@@ -47,6 +47,8 @@
#include <string>
#include <vector>
#include "trace-tools.h"
namespace asio {
class io_context;
}
......@@ -785,11 +787,19 @@ public:
std::shared_ptr<asio::io_context> ioContext() const;
void addTask(std::function<bool()>&& task);
void addTask(std::function<bool()>&& task,
const char *filename=CURRENT_FILENAME(),
uint32_t linum=CURRENT_LINE());
std::shared_ptr<Task> scheduleTask(std::function<void()>&& task,
std::chrono::steady_clock::time_point when);
std::chrono::steady_clock::time_point when,
const char* filename=CURRENT_FILENAME(),
uint32_t linum=CURRENT_LINE());
std::shared_ptr<Task> scheduleTaskIn(std::function<void()>&& task,
std::chrono::steady_clock::duration timeout);
std::chrono::steady_clock::duration timeout,
const char* filename=CURRENT_FILENAME(),
uint32_t linum=CURRENT_LINE());
std::map<std::string, std::string> getNearbyPeers(const std::string& accountID);
......@@ -884,9 +894,12 @@ private:
// Helper to install a callback to be called once by the main event loop
template<typename Callback>
static void
runOnMainThread(Callback&& cb)
runOnMainThread(Callback&& cb,
const char *filename=CURRENT_FILENAME(),
uint32_t linum=CURRENT_LINE())
{
Manager::instance().scheduler().run([cb = std::forward<Callback>(cb)]() mutable { cb(); });
Manager::instance().scheduler().run([cb = std::forward<Callback>(cb)]() mutable { cb(); },
filename, linum);
}
} // namespace jami
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment