mirror of https://github.com/auygun/kaliber.git
Use string for callback location info
This commit is contained in:
parent
fdbbb2a6fd
commit
83400a0b52
|
@ -12,12 +12,11 @@
|
|||
|
||||
// Helper for logging location info, e.g. LOG << LOCATION(from)
|
||||
#define LOCATION(from) \
|
||||
std::get<0>(from) << "() [" << [](const char* path) -> std::string { \
|
||||
std::string file_name(path); \
|
||||
size_t last_slash_pos = file_name.find_last_of("\\/"); \
|
||||
std::get<0>(from) << "() [" << [](std::string path) -> std::string { \
|
||||
size_t last_slash_pos = path.find_last_of("\\/"); \
|
||||
if (last_slash_pos != std::string::npos) \
|
||||
file_name = file_name.substr(last_slash_pos + 1); \
|
||||
return file_name; \
|
||||
path = path.substr(last_slash_pos + 1); \
|
||||
return path; \
|
||||
}(std::get<1>(from)) << ":" \
|
||||
<< std::get<2>(from) << "]"
|
||||
|
||||
|
@ -36,7 +35,7 @@ using Closure = std::function<void()>;
|
|||
|
||||
// Provides location info (function name, file name and line number) where of a
|
||||
// Closure was constructed.
|
||||
using Location = std::tuple<const char*, const char*, int>;
|
||||
using Location = std::tuple<std::string, std::string, int>;
|
||||
|
||||
#else
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ TaskRunner* TaskRunner::GetThreadLocalTaskRunner() {
|
|||
return thread_local_task_runner.get();
|
||||
}
|
||||
|
||||
void TaskRunner::PostTask(const Location& from, Closure task) {
|
||||
void TaskRunner::PostTask(Location from, Closure task) {
|
||||
DCHECK(task) << LOCATION(from);
|
||||
|
||||
task_count_.fetch_add(1, std::memory_order_relaxed);
|
||||
|
@ -44,9 +44,7 @@ void TaskRunner::PostTask(const Location& from, Closure task) {
|
|||
queue_.emplace_back(from, std::move(task));
|
||||
}
|
||||
|
||||
void TaskRunner::PostTaskAndReply(const Location& from,
|
||||
Closure task,
|
||||
Closure reply) {
|
||||
void TaskRunner::PostTaskAndReply(Location from, Closure task, Closure reply) {
|
||||
DCHECK(task) << LOCATION(from);
|
||||
DCHECK(reply) << LOCATION(from);
|
||||
DCHECK(thread_local_task_runner) << LOCATION(from);
|
||||
|
|
|
@ -42,12 +42,12 @@ class TaskRunner {
|
|||
TaskRunner() = default;
|
||||
~TaskRunner() = default;
|
||||
|
||||
void PostTask(const Location& from, Closure task);
|
||||
void PostTask(Location from, Closure task);
|
||||
|
||||
void PostTaskAndReply(const Location& from, Closure task, Closure reply);
|
||||
void PostTaskAndReply(Location from, Closure task, Closure reply);
|
||||
|
||||
template <typename ReturnType>
|
||||
void PostTaskAndReplyWithResult(const Location& from,
|
||||
void PostTaskAndReplyWithResult(Location from,
|
||||
std::function<ReturnType()> task,
|
||||
std::function<void(ReturnType)> reply) {
|
||||
auto* result = new ReturnType;
|
||||
|
|
|
@ -40,16 +40,14 @@ void ThreadPool::Shutdown() {
|
|||
threads_.clear();
|
||||
}
|
||||
|
||||
void ThreadPool::PostTask(const Location& from, Closure task) {
|
||||
void ThreadPool::PostTask(Location from, Closure task) {
|
||||
DCHECK((!threads_.empty()));
|
||||
|
||||
task_runner_.PostTask(from, std::move(task));
|
||||
semaphore_.release();
|
||||
}
|
||||
|
||||
void ThreadPool::PostTaskAndReply(const Location& from,
|
||||
Closure task,
|
||||
Closure reply) {
|
||||
void ThreadPool::PostTaskAndReply(Location from, Closure task, Closure reply) {
|
||||
DCHECK((!threads_.empty()));
|
||||
|
||||
task_runner_.PostTaskAndReply(from, std::move(task), std::move(reply));
|
||||
|
|
|
@ -26,12 +26,12 @@ class ThreadPool {
|
|||
|
||||
void Shutdown();
|
||||
|
||||
void PostTask(const Location& from, Closure task);
|
||||
void PostTask(Location from, Closure task);
|
||||
|
||||
void PostTaskAndReply(const Location& from, Closure task, Closure reply);
|
||||
void PostTaskAndReply(Location from, Closure task, Closure reply);
|
||||
|
||||
template <typename ReturnType>
|
||||
void PostTaskAndReplyWithResult(const Location& from,
|
||||
void PostTaskAndReplyWithResult(Location from,
|
||||
std::function<ReturnType()> task,
|
||||
std::function<void(ReturnType)> reply) {
|
||||
task_runner_.PostTaskAndReplyWithResult(from, std::move(task),
|
||||
|
|
Loading…
Reference in New Issue