Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(191)

Unified Diff: base/file_util_proxy.cc

Issue 9416060: Move PostTaskAndReplyWithStatus into task_runner_helpers.h (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/file_util_proxy.cc
diff --git a/base/file_util_proxy.cc b/base/file_util_proxy.cc
index 0873c9ccd5b3f61f7b2e84f75a8ed36c9ac6b1b9..3276300997b690ed6e752fc9d7f50446c683a751 100644
--- a/base/file_util_proxy.cc
+++ b/base/file_util_proxy.cc
@@ -8,37 +8,12 @@
#include "base/bind_helpers.h"
#include "base/file_util.h"
#include "base/message_loop_proxy.h"
+#include "base/task_runner_helpers.h"
namespace base {
-namespace {
-
-// Helper templates to call file_util or base::PlatformFile methods
-// and reply with the returned value.
-//
-// Typically when you have these methods:
-// R DoWorkAndReturn();
-// void Callback(R& result);
-//
-// You can pass the result of DoWorkAndReturn to the Callback by:
-//
-// R* result = new R;
-// message_loop_proxy->PostTaskAndReply(
-// from_here,
-// ReturnAsParam<R>(Bind(&DoWorkAndReturn), result),
-// RelayHelper(Bind(&Callback), Owned(result)));
-//
-// Or just use PostTaskAndReplyWithStatus helper template (see the code below).
-template <typename R1, typename R2>
-struct ReturnValueTranslator {
- static R2 Value(const R1& value);
-};
-
-template <typename R>
-struct ReturnValueTranslator<R, R> {
- static R Value(const R& value) { return value; }
-};
-
+// Translates a boolean return value into a PlatformFileError for callbacks in
+// the ReturnAsParam helper.
template <>
struct ReturnValueTranslator<bool, PlatformFileError> {
static PlatformFileError Value(const bool& value) {
@@ -48,55 +23,7 @@ struct ReturnValueTranslator<bool, PlatformFileError> {
}
};
-template <typename R1, typename R2>
-void ReturnAsParamAdapter(const Callback<R1(void)>& func, R2* result) {
- if (!func.is_null())
- *result = ReturnValueTranslator<R1, R2>::Value(func.Run());
-}
-
-template <typename R1, typename R2>
-Closure ReturnAsParam(const Callback<R1(void)>& func, R2* result) {
- DCHECK(result);
- return Bind(&ReturnAsParamAdapter<R1, R2>, func, result);
-}
-
-template <typename R, typename A1>
-void ReturnAsParamAdapter1(const Callback<R(A1)>& func, A1 a1, R* result) {
- if (!func.is_null())
- *result = func.Run(a1);
-}
-
-template <typename R, typename A1>
-Closure ReturnAsParam(const Callback<R(A1)>& func, A1 a1, R* result) {
- DCHECK(result);
- return Bind(&ReturnAsParamAdapter1<R, A1>, func, a1, result);
-}
-
-template <typename R>
-void ReplyAdapter(const Callback<void(R)>& callback, R* result) {
- DCHECK(result);
- if (!callback.is_null())
- callback.Run(*result);
-}
-
-template <typename R, typename OWNED>
-Closure ReplyHelper(const Callback<void(R)>& callback, OWNED result) {
- return Bind(&ReplyAdapter<R>, callback, result);
-}
-
-// Putting everything together.
-template <typename R1, typename R2>
-bool PostTaskAndReplyWithStatus(
- const scoped_refptr<MessageLoopProxy>& message_loop_proxy,
- const tracked_objects::Location& from_here,
- const Callback<R1(void)>& file_util_work,
- const Callback<void(R2)>& callback,
- R2* result) {
- return message_loop_proxy->PostTaskAndReply(
- from_here,
- ReturnAsParam<R1>(file_util_work, result),
- ReplyHelper(callback, Owned(result)));
-}
+namespace {
// Helper classes or routines for individual methods.
class CreateOrOpenHelper {
« no previous file with comments | « base/base.gypi ('k') | base/task_runner_helpers.h » ('j') | base/task_runner_helpers.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698