| OLD | NEW |
| 1 // This file was GENERATED by command: | 1 // This file was GENERATED by command: |
| 2 // pump.py bind_to_loop.h.pump | 2 // pump.py bind_to_loop.h.pump |
| 3 // DO NOT EDIT BY HAND!!! | 3 // DO NOT EDIT BY HAND!!! |
| 4 | 4 |
| 5 | 5 |
| 6 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 6 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 7 // Use of this source code is governed by a BSD-style license that can be | 7 // Use of this source code is governed by a BSD-style license that can be |
| 8 // found in the LICENSE file. | 8 // found in the LICENSE file. |
| 9 | 9 |
| 10 #ifndef MEDIA_BASE_BIND_TO_LOOP_H_ | 10 #ifndef MEDIA_BASE_BIND_TO_LOOP_H_ |
| 11 #define MEDIA_BASE_BIND_TO_LOOP_H_ | 11 #define MEDIA_BASE_BIND_TO_LOOP_H_ |
| 12 | 12 |
| 13 #include "base/bind.h" | 13 #include "base/bind.h" |
| 14 #include "base/location.h" | 14 #include "base/location.h" |
| 15 #include "base/message_loop/message_loop_proxy.h" | 15 #include "base/message_loop/message_loop_proxy.h" |
| 16 #include "base/single_thread_task_runner.h" |
| 16 | 17 |
| 17 // This is a helper utility for base::Bind()ing callbacks on to particular | 18 // This is a helper utility for base::Bind()ing callbacks on to particular |
| 18 // MessageLoops. A typical use is when |a| (of class |A|) wants to hand a | 19 // MessageLoops. A typical use is when |a| (of class |A|) wants to hand a |
| 19 // callback such as base::Bind(&A::AMethod, a) to |b|, but needs to ensure that | 20 // callback such as base::Bind(&A::AMethod, a) to |b|, but needs to ensure that |
| 20 // when |b| executes the callback, it does so on a particular MessageLoop. | 21 // when |b| executes the callback, it does so on a particular MessageLoop. |
| 21 // | 22 // |
| 22 // Typical usage: request to be called back on the current thread: | 23 // Typical usage: request to be called back on the current thread: |
| 23 // other->StartAsyncProcessAndCallMeBack( | 24 // other->StartAsyncProcessAndCallMeBack( |
| 24 // media::BindToLoop(MessageLoopProxy::current(), | 25 // media::BindToLoop(MessageLoopProxy::current(), |
| 25 // base::Bind(&MyClass::MyMethod, this))); | 26 // base::Bind(&MyClass::MyMethod, this))); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 46 | 47 |
| 47 template <typename T> | 48 template <typename T> |
| 48 base::internal::PassedWrapper<ScopedVector<T> > TrampolineForward( | 49 base::internal::PassedWrapper<ScopedVector<T> > TrampolineForward( |
| 49 ScopedVector<T>& p) { return base::Passed(&p); } | 50 ScopedVector<T>& p) { return base::Passed(&p); } |
| 50 | 51 |
| 51 template <typename T> struct TrampolineHelper; | 52 template <typename T> struct TrampolineHelper; |
| 52 | 53 |
| 53 template <> | 54 template <> |
| 54 struct TrampolineHelper<void()> { | 55 struct TrampolineHelper<void()> { |
| 55 static void Run( | 56 static void Run( |
| 56 const scoped_refptr<base::MessageLoopProxy>& loop, | 57 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| 57 const base::Callback<void()>& cb) { | 58 const base::Callback<void()>& cb) { |
| 58 loop->PostTask(FROM_HERE, base::Bind(cb)); | 59 task_runner->PostTask(FROM_HERE, base::Bind(cb)); |
| 59 } | 60 } |
| 60 }; | 61 }; |
| 61 | 62 |
| 62 | 63 |
| 63 template <typename A1> | 64 template <typename A1> |
| 64 struct TrampolineHelper<void(A1)> { | 65 struct TrampolineHelper<void(A1)> { |
| 65 static void Run( | 66 static void Run( |
| 66 const scoped_refptr<base::MessageLoopProxy>& loop, | 67 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| 67 const base::Callback<void(A1)>& cb, A1 a1) { | 68 const base::Callback<void(A1)>& cb, A1 a1) { |
| 68 loop->PostTask(FROM_HERE, base::Bind(cb, internal::TrampolineForward(a1))); | 69 task_runner->PostTask(FROM_HERE, base::Bind(cb, |
| 70 internal::TrampolineForward(a1))); |
| 69 } | 71 } |
| 70 }; | 72 }; |
| 71 | 73 |
| 72 | 74 |
| 73 template <typename A1, typename A2> | 75 template <typename A1, typename A2> |
| 74 struct TrampolineHelper<void(A1, A2)> { | 76 struct TrampolineHelper<void(A1, A2)> { |
| 75 static void Run( | 77 static void Run( |
| 76 const scoped_refptr<base::MessageLoopProxy>& loop, | 78 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| 77 const base::Callback<void(A1, A2)>& cb, A1 a1, A2 a2) { | 79 const base::Callback<void(A1, A2)>& cb, A1 a1, A2 a2) { |
| 78 loop->PostTask(FROM_HERE, base::Bind(cb, internal::TrampolineForward(a1), | 80 task_runner->PostTask(FROM_HERE, base::Bind(cb, |
| 79 internal::TrampolineForward(a2))); | 81 internal::TrampolineForward(a1), internal::TrampolineForward(a2))); |
| 80 } | 82 } |
| 81 }; | 83 }; |
| 82 | 84 |
| 83 | 85 |
| 84 template <typename A1, typename A2, typename A3> | 86 template <typename A1, typename A2, typename A3> |
| 85 struct TrampolineHelper<void(A1, A2, A3)> { | 87 struct TrampolineHelper<void(A1, A2, A3)> { |
| 86 static void Run( | 88 static void Run( |
| 87 const scoped_refptr<base::MessageLoopProxy>& loop, | 89 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| 88 const base::Callback<void(A1, A2, A3)>& cb, A1 a1, A2 a2, A3 a3) { | 90 const base::Callback<void(A1, A2, A3)>& cb, A1 a1, A2 a2, A3 a3) { |
| 89 loop->PostTask(FROM_HERE, base::Bind(cb, internal::TrampolineForward(a1), | 91 task_runner->PostTask(FROM_HERE, base::Bind(cb, |
| 90 internal::TrampolineForward(a2), internal::TrampolineForward(a3))); | 92 internal::TrampolineForward(a1), internal::TrampolineForward(a2), |
| 93 internal::TrampolineForward(a3))); |
| 91 } | 94 } |
| 92 }; | 95 }; |
| 93 | 96 |
| 94 | 97 |
| 95 template <typename A1, typename A2, typename A3, typename A4> | 98 template <typename A1, typename A2, typename A3, typename A4> |
| 96 struct TrampolineHelper<void(A1, A2, A3, A4)> { | 99 struct TrampolineHelper<void(A1, A2, A3, A4)> { |
| 97 static void Run( | 100 static void Run( |
| 98 const scoped_refptr<base::MessageLoopProxy>& loop, | 101 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| 99 const base::Callback<void(A1, A2, A3, A4)>& cb, A1 a1, A2 a2, A3 a3, | 102 const base::Callback<void(A1, A2, A3, A4)>& cb, A1 a1, A2 a2, A3 a3, |
| 100 A4 a4) { | 103 A4 a4) { |
| 101 loop->PostTask(FROM_HERE, base::Bind(cb, internal::TrampolineForward(a1), | 104 task_runner->PostTask(FROM_HERE, base::Bind(cb, |
| 102 internal::TrampolineForward(a2), internal::TrampolineForward(a3), | 105 internal::TrampolineForward(a1), internal::TrampolineForward(a2), |
| 103 internal::TrampolineForward(a4))); | 106 internal::TrampolineForward(a3), internal::TrampolineForward(a4))); |
| 104 } | 107 } |
| 105 }; | 108 }; |
| 106 | 109 |
| 107 | 110 |
| 108 template <typename A1, typename A2, typename A3, typename A4, typename A5> | 111 template <typename A1, typename A2, typename A3, typename A4, typename A5> |
| 109 struct TrampolineHelper<void(A1, A2, A3, A4, A5)> { | 112 struct TrampolineHelper<void(A1, A2, A3, A4, A5)> { |
| 110 static void Run( | 113 static void Run( |
| 111 const scoped_refptr<base::MessageLoopProxy>& loop, | 114 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| 112 const base::Callback<void(A1, A2, A3, A4, A5)>& cb, A1 a1, A2 a2, A3 a3, | 115 const base::Callback<void(A1, A2, A3, A4, A5)>& cb, A1 a1, A2 a2, A3 a3, |
| 113 A4 a4, A5 a5) { | 116 A4 a4, A5 a5) { |
| 114 loop->PostTask(FROM_HERE, base::Bind(cb, internal::TrampolineForward(a1), | 117 task_runner->PostTask(FROM_HERE, base::Bind(cb, |
| 115 internal::TrampolineForward(a2), internal::TrampolineForward(a3), | 118 internal::TrampolineForward(a1), internal::TrampolineForward(a2), |
| 116 internal::TrampolineForward(a4), internal::TrampolineForward(a5))); | 119 internal::TrampolineForward(a3), internal::TrampolineForward(a4), |
| 120 internal::TrampolineForward(a5))); |
| 117 } | 121 } |
| 118 }; | 122 }; |
| 119 | 123 |
| 120 | 124 |
| 121 template <typename A1, typename A2, typename A3, typename A4, typename A5, | 125 template <typename A1, typename A2, typename A3, typename A4, typename A5, |
| 122 typename A6> | 126 typename A6> |
| 123 struct TrampolineHelper<void(A1, A2, A3, A4, A5, A6)> { | 127 struct TrampolineHelper<void(A1, A2, A3, A4, A5, A6)> { |
| 124 static void Run( | 128 static void Run( |
| 125 const scoped_refptr<base::MessageLoopProxy>& loop, | 129 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| 126 const base::Callback<void(A1, A2, A3, A4, A5, A6)>& cb, A1 a1, A2 a2, | 130 const base::Callback<void(A1, A2, A3, A4, A5, A6)>& cb, A1 a1, A2 a2, |
| 127 A3 a3, A4 a4, A5 a5, A6 a6) { | 131 A3 a3, A4 a4, A5 a5, A6 a6) { |
| 128 loop->PostTask(FROM_HERE, base::Bind(cb, internal::TrampolineForward(a1), | 132 task_runner->PostTask(FROM_HERE, base::Bind(cb, |
| 129 internal::TrampolineForward(a2), internal::TrampolineForward(a3), | 133 internal::TrampolineForward(a1), internal::TrampolineForward(a2), |
| 130 internal::TrampolineForward(a4), internal::TrampolineForward(a5), | 134 internal::TrampolineForward(a3), internal::TrampolineForward(a4), |
| 131 internal::TrampolineForward(a6))); | 135 internal::TrampolineForward(a5), internal::TrampolineForward(a6))); |
| 132 } | 136 } |
| 133 }; | 137 }; |
| 134 | 138 |
| 135 | 139 |
| 136 template <typename A1, typename A2, typename A3, typename A4, typename A5, | 140 template <typename A1, typename A2, typename A3, typename A4, typename A5, |
| 137 typename A6, typename A7> | 141 typename A6, typename A7> |
| 138 struct TrampolineHelper<void(A1, A2, A3, A4, A5, A6, A7)> { | 142 struct TrampolineHelper<void(A1, A2, A3, A4, A5, A6, A7)> { |
| 139 static void Run( | 143 static void Run( |
| 140 const scoped_refptr<base::MessageLoopProxy>& loop, | 144 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| 141 const base::Callback<void(A1, A2, A3, A4, A5, A6, A7)>& cb, A1 a1, A2 a2, | 145 const base::Callback<void(A1, A2, A3, A4, A5, A6, A7)>& cb, A1 a1, A2 a2, |
| 142 A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) { | 146 A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) { |
| 143 loop->PostTask(FROM_HERE, base::Bind(cb, internal::TrampolineForward(a1), | 147 task_runner->PostTask(FROM_HERE, base::Bind(cb, |
| 144 internal::TrampolineForward(a2), internal::TrampolineForward(a3), | 148 internal::TrampolineForward(a1), internal::TrampolineForward(a2), |
| 145 internal::TrampolineForward(a4), internal::TrampolineForward(a5), | 149 internal::TrampolineForward(a3), internal::TrampolineForward(a4), |
| 146 internal::TrampolineForward(a6), internal::TrampolineForward(a7))); | 150 internal::TrampolineForward(a5), internal::TrampolineForward(a6), |
| 151 internal::TrampolineForward(a7))); |
| 147 } | 152 } |
| 148 }; | 153 }; |
| 149 | 154 |
| 150 | 155 |
| 151 } // namespace internal | 156 } // namespace internal |
| 152 | 157 |
| 153 template<typename T> | 158 template<typename T> |
| 154 static base::Callback<T> BindToLoop( | 159 static base::Callback<T> BindToLoop( |
| 155 const scoped_refptr<base::MessageLoopProxy>& loop, | 160 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| 156 const base::Callback<T>& cb) { | 161 const base::Callback<T>& cb) { |
| 157 return base::Bind(&internal::TrampolineHelper<T>::Run, loop, cb); | 162 return base::Bind(&internal::TrampolineHelper<T>::Run, task_runner, cb); |
| 158 } | 163 } |
| 159 | 164 |
| 160 template<typename T> | 165 template<typename T> |
| 161 static base::Callback<T> BindToCurrentLoop( | 166 static base::Callback<T> BindToCurrentLoop( |
| 162 const base::Callback<T>& cb) { | 167 const base::Callback<T>& cb) { |
| 163 return BindToLoop(base::MessageLoopProxy::current(), cb); | 168 return BindToLoop(base::MessageLoopProxy::current(), cb); |
| 164 } | 169 } |
| 165 | 170 |
| 166 } // namespace media | 171 } // namespace media |
| 167 | 172 |
| 168 #endif // MEDIA_BASE_BIND_TO_LOOP_H_ | 173 #endif // MEDIA_BASE_BIND_TO_LOOP_H_ |
| OLD | NEW |