0
Files
src/base/task_runner_util.h
Hans Wennborg 7b5337170c Reland "Reland "Remove/replace unnecessary includes of logging.h (base/)""
This is a reland of 80b8a77ae6

Original change's description:
> Reland "Remove/replace unnecessary includes of logging.h (base/)"
>
> This is a reland of a6e9e966ab
>
> Original change's description:
> > Remove/replace unnecessary includes of logging.h (base/)
> >
> > If the file just needs the CHECK/CHECK_OP/NOTREACHED
> > macros, use the appropriate header for that instead.
> > Or if logging.h is not needed at all, remove it.
> >
> > This is both a nice cleanup (logging.h is a big header,
> > and including it unnecessarily has compile-time costs),
> > and part of the final step towards making logging.h no
> > longer include check.h and the others.
> >
> > TBR=thakis
> >
> > Bug: 1031540
> > Change-Id: Ib87efde411a3617fcebad6dae08313c20d63d0bd
> > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2254284
> > Commit-Queue: Hans Wennborg <hans@chromium.org>
> > Reviewed-by: Nico Weber <thakis@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#780580}
>
> TBR=thakis
>
> Bug: 1031540
> Change-Id: I0ba8608458cf14c3e4bbc86eaef4c7ad136a9263
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2256179
> Reviewed-by: Hans Wennborg <hans@chromium.org>
> Commit-Queue: Hans Wennborg <hans@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#780795}

TBR=thakis

Bug: 1031540
Change-Id: I21fab4b969b66e02ad89a8cee6698e50934916f4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2257873
Reviewed-by: Hans Wennborg <hans@chromium.org>
Commit-Queue: Hans Wennborg <hans@chromium.org>
Cr-Commit-Position: refs/heads/master@{#780959}
2020-06-22 20:52:27 +00:00

57 lines
1.8 KiB
C++

// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BASE_TASK_RUNNER_UTIL_H_
#define BASE_TASK_RUNNER_UTIL_H_
#include <memory>
#include <utility>
#include "base/bind.h"
#include "base/callback.h"
#include "base/check.h"
#include "base/post_task_and_reply_with_result_internal.h"
#include "base/task_runner.h"
namespace base {
// When you have these methods
//
// R DoWorkAndReturn();
// void Callback(const R& result);
//
// and want to call them in a PostTaskAndReply kind of fashion where the
// result of DoWorkAndReturn is passed to the Callback, you can use
// PostTaskAndReplyWithResult as in this example:
//
// PostTaskAndReplyWithResult(
// target_thread_.task_runner(),
// FROM_HERE,
// BindOnce(&DoWorkAndReturn),
// BindOnce(&Callback));
//
// DEPRECATED: Prefer calling|task_runner->PostTaskAndReplyWithResult(...)|
// directly.
// TODO(gab): Mass-migrate to the member method.
template <typename TaskReturnType, typename ReplyArgType>
bool PostTaskAndReplyWithResult(TaskRunner* task_runner,
const Location& from_here,
OnceCallback<TaskReturnType()> task,
OnceCallback<void(ReplyArgType)> reply) {
DCHECK(task);
DCHECK(reply);
// std::unique_ptr used to avoid the need of a default constructor.
auto* result = new std::unique_ptr<TaskReturnType>();
return task_runner->PostTaskAndReply(
from_here,
BindOnce(&internal::ReturnAsParamAdapter<TaskReturnType>, std::move(task),
result),
BindOnce(&internal::ReplyAdapter<TaskReturnType, ReplyArgType>,
std::move(reply), Owned(result)));
}
} // namespace base
#endif // BASE_TASK_RUNNER_UTIL_H_