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

Side by Side Diff: webrtc/api/proxy.h

Issue 2019423006: Adding more detail to MessageQueue::Dispatch logging. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fixing one more place where RTC_FROM_HERE wasn't used. Created 4 years, 6 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 unified diff | Download patch
« no previous file with comments | « webrtc/api/peerconnectionfactoryproxy.h ('k') | webrtc/api/quicdatachannel.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 namespace internal { 100 namespace internal {
101 101
102 class SynchronousMethodCall 102 class SynchronousMethodCall
103 : public rtc::MessageData, 103 : public rtc::MessageData,
104 public rtc::MessageHandler { 104 public rtc::MessageHandler {
105 public: 105 public:
106 explicit SynchronousMethodCall(rtc::MessageHandler* proxy) 106 explicit SynchronousMethodCall(rtc::MessageHandler* proxy)
107 : e_(), proxy_(proxy) {} 107 : e_(), proxy_(proxy) {}
108 ~SynchronousMethodCall() {} 108 ~SynchronousMethodCall() {}
109 109
110 void Invoke(rtc::Thread* t) { 110 void Invoke(const rtc::Location& posted_from, rtc::Thread* t) {
111 if (t->IsCurrent()) { 111 if (t->IsCurrent()) {
112 proxy_->OnMessage(NULL); 112 proxy_->OnMessage(NULL);
113 } else { 113 } else {
114 e_.reset(new rtc::Event(false, false)); 114 e_.reset(new rtc::Event(false, false));
115 t->Post(this, 0); 115 t->Post(posted_from, this, 0);
116 e_->Wait(rtc::Event::kForever); 116 e_->Wait(rtc::Event::kForever);
117 } 117 }
118 } 118 }
119 119
120 private: 120 private:
121 void OnMessage(rtc::Message*) { proxy_->OnMessage(NULL); e_->Set(); } 121 void OnMessage(rtc::Message*) { proxy_->OnMessage(NULL); e_->Set(); }
122 std::unique_ptr<rtc::Event> e_; 122 std::unique_ptr<rtc::Event> e_;
123 rtc::MessageHandler* proxy_; 123 rtc::MessageHandler* proxy_;
124 }; 124 };
125 125
126 } // namespace internal 126 } // namespace internal
127 127
128 template <typename C, typename R> 128 template <typename C, typename R>
129 class MethodCall0 : public rtc::Message, 129 class MethodCall0 : public rtc::Message,
130 public rtc::MessageHandler { 130 public rtc::MessageHandler {
131 public: 131 public:
132 typedef R (C::*Method)(); 132 typedef R (C::*Method)();
133 MethodCall0(C* c, Method m) : c_(c), m_(m) {} 133 MethodCall0(C* c, Method m) : c_(c), m_(m) {}
134 134
135 R Marshal(rtc::Thread* t) { 135 R Marshal(const rtc::Location& posted_from, rtc::Thread* t) {
136 internal::SynchronousMethodCall(this).Invoke(t); 136 internal::SynchronousMethodCall(this).Invoke(posted_from, t);
137 return r_.value(); 137 return r_.value();
138 } 138 }
139 139
140 private: 140 private:
141 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_); } 141 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_); }
142 142
143 C* c_; 143 C* c_;
144 Method m_; 144 Method m_;
145 ReturnType<R> r_; 145 ReturnType<R> r_;
146 }; 146 };
147 147
148 template <typename C, typename R> 148 template <typename C, typename R>
149 class ConstMethodCall0 : public rtc::Message, 149 class ConstMethodCall0 : public rtc::Message,
150 public rtc::MessageHandler { 150 public rtc::MessageHandler {
151 public: 151 public:
152 typedef R (C::*Method)() const; 152 typedef R (C::*Method)() const;
153 ConstMethodCall0(C* c, Method m) : c_(c), m_(m) {} 153 ConstMethodCall0(C* c, Method m) : c_(c), m_(m) {}
154 154
155 R Marshal(rtc::Thread* t) { 155 R Marshal(const rtc::Location& posted_from, rtc::Thread* t) {
156 internal::SynchronousMethodCall(this).Invoke(t); 156 internal::SynchronousMethodCall(this).Invoke(posted_from, t);
157 return r_.value(); 157 return r_.value();
158 } 158 }
159 159
160 private: 160 private:
161 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_); } 161 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_); }
162 162
163 C* c_; 163 C* c_;
164 Method m_; 164 Method m_;
165 ReturnType<R> r_; 165 ReturnType<R> r_;
166 }; 166 };
167 167
168 template <typename C, typename R, typename T1> 168 template <typename C, typename R, typename T1>
169 class MethodCall1 : public rtc::Message, 169 class MethodCall1 : public rtc::Message,
170 public rtc::MessageHandler { 170 public rtc::MessageHandler {
171 public: 171 public:
172 typedef R (C::*Method)(T1 a1); 172 typedef R (C::*Method)(T1 a1);
173 MethodCall1(C* c, Method m, T1 a1) : c_(c), m_(m), a1_(a1) {} 173 MethodCall1(C* c, Method m, T1 a1) : c_(c), m_(m), a1_(a1) {}
174 174
175 R Marshal(rtc::Thread* t) { 175 R Marshal(const rtc::Location& posted_from, rtc::Thread* t) {
176 internal::SynchronousMethodCall(this).Invoke(t); 176 internal::SynchronousMethodCall(this).Invoke(posted_from, t);
177 return r_.value(); 177 return r_.value();
178 } 178 }
179 179
180 private: 180 private:
181 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_, a1_); } 181 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_, a1_); }
182 182
183 C* c_; 183 C* c_;
184 Method m_; 184 Method m_;
185 ReturnType<R> r_; 185 ReturnType<R> r_;
186 T1 a1_; 186 T1 a1_;
187 }; 187 };
188 188
189 template <typename C, typename R, typename T1> 189 template <typename C, typename R, typename T1>
190 class ConstMethodCall1 : public rtc::Message, 190 class ConstMethodCall1 : public rtc::Message,
191 public rtc::MessageHandler { 191 public rtc::MessageHandler {
192 public: 192 public:
193 typedef R (C::*Method)(T1 a1) const; 193 typedef R (C::*Method)(T1 a1) const;
194 ConstMethodCall1(C* c, Method m, T1 a1) : c_(c), m_(m), a1_(a1) {} 194 ConstMethodCall1(C* c, Method m, T1 a1) : c_(c), m_(m), a1_(a1) {}
195 195
196 R Marshal(rtc::Thread* t) { 196 R Marshal(const rtc::Location& posted_from, rtc::Thread* t) {
197 internal::SynchronousMethodCall(this).Invoke(t); 197 internal::SynchronousMethodCall(this).Invoke(posted_from, t);
198 return r_.value(); 198 return r_.value();
199 } 199 }
200 200
201 private: 201 private:
202 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_, a1_); } 202 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_, a1_); }
203 203
204 C* c_; 204 C* c_;
205 Method m_; 205 Method m_;
206 ReturnType<R> r_; 206 ReturnType<R> r_;
207 T1 a1_; 207 T1 a1_;
208 }; 208 };
209 209
210 template <typename C, typename R, typename T1, typename T2> 210 template <typename C, typename R, typename T1, typename T2>
211 class MethodCall2 : public rtc::Message, 211 class MethodCall2 : public rtc::Message,
212 public rtc::MessageHandler { 212 public rtc::MessageHandler {
213 public: 213 public:
214 typedef R (C::*Method)(T1 a1, T2 a2); 214 typedef R (C::*Method)(T1 a1, T2 a2);
215 MethodCall2(C* c, Method m, T1 a1, T2 a2) : c_(c), m_(m), a1_(a1), a2_(a2) {} 215 MethodCall2(C* c, Method m, T1 a1, T2 a2) : c_(c), m_(m), a1_(a1), a2_(a2) {}
216 216
217 R Marshal(rtc::Thread* t) { 217 R Marshal(const rtc::Location& posted_from, rtc::Thread* t) {
218 internal::SynchronousMethodCall(this).Invoke(t); 218 internal::SynchronousMethodCall(this).Invoke(posted_from, t);
219 return r_.value(); 219 return r_.value();
220 } 220 }
221 221
222 private: 222 private:
223 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_, a1_, a2_); } 223 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_, a1_, a2_); }
224 224
225 C* c_; 225 C* c_;
226 Method m_; 226 Method m_;
227 ReturnType<R> r_; 227 ReturnType<R> r_;
228 T1 a1_; 228 T1 a1_;
229 T2 a2_; 229 T2 a2_;
230 }; 230 };
231 231
232 template <typename C, typename R, typename T1, typename T2, typename T3> 232 template <typename C, typename R, typename T1, typename T2, typename T3>
233 class MethodCall3 : public rtc::Message, 233 class MethodCall3 : public rtc::Message,
234 public rtc::MessageHandler { 234 public rtc::MessageHandler {
235 public: 235 public:
236 typedef R (C::*Method)(T1 a1, T2 a2, T3 a3); 236 typedef R (C::*Method)(T1 a1, T2 a2, T3 a3);
237 MethodCall3(C* c, Method m, T1 a1, T2 a2, T3 a3) 237 MethodCall3(C* c, Method m, T1 a1, T2 a2, T3 a3)
238 : c_(c), m_(m), a1_(a1), a2_(a2), a3_(a3) {} 238 : c_(c), m_(m), a1_(a1), a2_(a2), a3_(a3) {}
239 239
240 R Marshal(rtc::Thread* t) { 240 R Marshal(const rtc::Location& posted_from, rtc::Thread* t) {
241 internal::SynchronousMethodCall(this).Invoke(t); 241 internal::SynchronousMethodCall(this).Invoke(posted_from, t);
242 return r_.value(); 242 return r_.value();
243 } 243 }
244 244
245 private: 245 private:
246 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_, a1_, a2_, a3_); } 246 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_, a1_, a2_, a3_); }
247 247
248 C* c_; 248 C* c_;
249 Method m_; 249 Method m_;
250 ReturnType<R> r_; 250 ReturnType<R> r_;
251 T1 a1_; 251 T1 a1_;
252 T2 a2_; 252 T2 a2_;
253 T3 a3_; 253 T3 a3_;
254 }; 254 };
255 255
256 template <typename C, typename R, typename T1, typename T2, typename T3, 256 template <typename C, typename R, typename T1, typename T2, typename T3,
257 typename T4> 257 typename T4>
258 class MethodCall4 : public rtc::Message, 258 class MethodCall4 : public rtc::Message,
259 public rtc::MessageHandler { 259 public rtc::MessageHandler {
260 public: 260 public:
261 typedef R (C::*Method)(T1 a1, T2 a2, T3 a3, T4 a4); 261 typedef R (C::*Method)(T1 a1, T2 a2, T3 a3, T4 a4);
262 MethodCall4(C* c, Method m, T1 a1, T2 a2, T3 a3, T4 a4) 262 MethodCall4(C* c, Method m, T1 a1, T2 a2, T3 a3, T4 a4)
263 : c_(c), m_(m), a1_(a1), a2_(a2), a3_(a3), a4_(a4) {} 263 : c_(c), m_(m), a1_(a1), a2_(a2), a3_(a3), a4_(a4) {}
264 264
265 R Marshal(rtc::Thread* t) { 265 R Marshal(const rtc::Location& posted_from, rtc::Thread* t) {
266 internal::SynchronousMethodCall(this).Invoke(t); 266 internal::SynchronousMethodCall(this).Invoke(posted_from, t);
267 return r_.value(); 267 return r_.value();
268 } 268 }
269 269
270 private: 270 private:
271 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_, a1_, a2_, a3_, a4_); } 271 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_, a1_, a2_, a3_, a4_); }
272 272
273 C* c_; 273 C* c_;
274 Method m_; 274 Method m_;
275 ReturnType<R> r_; 275 ReturnType<R> r_;
276 T1 a1_; 276 T1 a1_;
277 T2 a2_; 277 T2 a2_;
278 T3 a3_; 278 T3 a3_;
279 T4 a4_; 279 T4 a4_;
280 }; 280 };
281 281
282 template <typename C, typename R, typename T1, typename T2, typename T3, 282 template <typename C, typename R, typename T1, typename T2, typename T3,
283 typename T4, typename T5> 283 typename T4, typename T5>
284 class MethodCall5 : public rtc::Message, 284 class MethodCall5 : public rtc::Message,
285 public rtc::MessageHandler { 285 public rtc::MessageHandler {
286 public: 286 public:
287 typedef R (C::*Method)(T1 a1, T2 a2, T3 a3, T4 a4, T5 a5); 287 typedef R (C::*Method)(T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
288 MethodCall5(C* c, Method m, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) 288 MethodCall5(C* c, Method m, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
289 : c_(c), m_(m), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5) {} 289 : c_(c), m_(m), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5) {}
290 290
291 R Marshal(rtc::Thread* t) { 291 R Marshal(const rtc::Location& posted_from, rtc::Thread* t) {
292 internal::SynchronousMethodCall(this).Invoke(t); 292 internal::SynchronousMethodCall(this).Invoke(posted_from, t);
293 return r_.value(); 293 return r_.value();
294 } 294 }
295 295
296 private: 296 private:
297 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_, a1_, a2_, a3_, a4_, a5_); } 297 void OnMessage(rtc::Message*) { r_.Invoke(c_, m_, a1_, a2_, a3_, a4_, a5_); }
298 298
299 C* c_; 299 C* c_;
300 Method m_; 300 Method m_;
301 ReturnType<R> r_; 301 ReturnType<R> r_;
302 T1 a1_; 302 T1 a1_;
303 T2 a2_; 303 T2 a2_;
304 T3 a3_; 304 T3 a3_;
305 T4 a4_; 305 T4 a4_;
306 T5 a5_; 306 T5 a5_;
307 }; 307 };
308 308
309 #define BEGIN_SIGNALING_PROXY_MAP(c) \ 309 #define BEGIN_SIGNALING_PROXY_MAP(c) \
310 template <class INTERNAL_CLASS> \ 310 template <class INTERNAL_CLASS> \
311 class c##ProxyWithInternal; \ 311 class c##ProxyWithInternal; \
312 typedef c##ProxyWithInternal<c##Interface> c##Proxy; \ 312 typedef c##ProxyWithInternal<c##Interface> c##Proxy; \
313 template <class INTERNAL_CLASS> \ 313 template <class INTERNAL_CLASS> \
314 class c##ProxyWithInternal : public c##Interface { \ 314 class c##ProxyWithInternal : public c##Interface { \
315 protected: \ 315 protected: \
316 typedef c##Interface C; \ 316 typedef c##Interface C; \
317 c##ProxyWithInternal(rtc::Thread* signaling_thread, INTERNAL_CLASS* c) \ 317 c##ProxyWithInternal(rtc::Thread* signaling_thread, INTERNAL_CLASS* c) \
318 : signaling_thread_(signaling_thread), c_(c) {} \ 318 : signaling_thread_(signaling_thread), c_(c) {} \
319 ~c##ProxyWithInternal() { \ 319 ~c##ProxyWithInternal() { \
320 MethodCall0<c##ProxyWithInternal, void> call( \ 320 MethodCall0<c##ProxyWithInternal, void> call( \
321 this, &c##ProxyWithInternal::Release_s); \ 321 this, &c##ProxyWithInternal::Release_s); \
322 call.Marshal(signaling_thread_); \ 322 call.Marshal(RTC_FROM_HERE, signaling_thread_); \
323 } \ 323 } \
324 \ 324 \
325 public: \ 325 public: \
326 static rtc::scoped_refptr<c##ProxyWithInternal> Create( \ 326 static rtc::scoped_refptr<c##ProxyWithInternal> Create( \
327 rtc::Thread* signaling_thread, \ 327 rtc::Thread* signaling_thread, \
328 INTERNAL_CLASS* c) { \ 328 INTERNAL_CLASS* c) { \
329 return new rtc::RefCountedObject<c##ProxyWithInternal>(signaling_thread, \ 329 return new rtc::RefCountedObject<c##ProxyWithInternal>(signaling_thread, \
330 c); \ 330 c); \
331 } \ 331 } \
332 const INTERNAL_CLASS* internal() const { return c_.get(); } \ 332 const INTERNAL_CLASS* internal() const { return c_.get(); } \
333 INTERNAL_CLASS* internal() { return c_.get(); } 333 INTERNAL_CLASS* internal() { return c_.get(); }
334 334
335 #define BEGIN_PROXY_MAP(c) \ 335 #define BEGIN_PROXY_MAP(c) \
336 template <class INTERNAL_CLASS> \ 336 template <class INTERNAL_CLASS> \
337 class c##ProxyWithInternal; \ 337 class c##ProxyWithInternal; \
338 typedef c##ProxyWithInternal<c##Interface> c##Proxy; \ 338 typedef c##ProxyWithInternal<c##Interface> c##Proxy; \
339 template <class INTERNAL_CLASS> \ 339 template <class INTERNAL_CLASS> \
340 class c##ProxyWithInternal : public c##Interface { \ 340 class c##ProxyWithInternal : public c##Interface { \
341 protected: \ 341 protected: \
342 typedef c##Interface C; \ 342 typedef c##Interface C; \
343 c##ProxyWithInternal(rtc::Thread* signaling_thread, \ 343 c##ProxyWithInternal(rtc::Thread* signaling_thread, \
344 rtc::Thread* worker_thread, \ 344 rtc::Thread* worker_thread, \
345 INTERNAL_CLASS* c) \ 345 INTERNAL_CLASS* c) \
346 : signaling_thread_(signaling_thread), \ 346 : signaling_thread_(signaling_thread), \
347 worker_thread_(worker_thread), \ 347 worker_thread_(worker_thread), \
348 c_(c) {} \ 348 c_(c) {} \
349 ~c##ProxyWithInternal() { \ 349 ~c##ProxyWithInternal() { \
350 MethodCall0<c##ProxyWithInternal, void> call( \ 350 MethodCall0<c##ProxyWithInternal, void> call( \
351 this, &c##ProxyWithInternal::Release_s); \ 351 this, &c##ProxyWithInternal::Release_s); \
352 call.Marshal(signaling_thread_); \ 352 call.Marshal(RTC_FROM_HERE, signaling_thread_); \
353 } \ 353 } \
354 \ 354 \
355 public: \ 355 public: \
356 static rtc::scoped_refptr<c##ProxyWithInternal> Create( \ 356 static rtc::scoped_refptr<c##ProxyWithInternal> Create( \
357 rtc::Thread* signaling_thread, \ 357 rtc::Thread* signaling_thread, \
358 rtc::Thread* worker_thread, \ 358 rtc::Thread* worker_thread, \
359 INTERNAL_CLASS* c) { \ 359 INTERNAL_CLASS* c) { \
360 return new rtc::RefCountedObject<c##ProxyWithInternal>( \ 360 return new rtc::RefCountedObject<c##ProxyWithInternal>( \
361 signaling_thread, worker_thread, c); \ 361 signaling_thread, worker_thread, c); \
362 } \ 362 } \
363 const INTERNAL_CLASS* internal() const { return c_.get(); } \ 363 const INTERNAL_CLASS* internal() const { return c_.get(); } \
364 INTERNAL_CLASS* internal() { return c_.get(); } 364 INTERNAL_CLASS* internal() { return c_.get(); }
365 365
366 #define PROXY_METHOD0(r, method) \ 366 #define PROXY_METHOD0(r, method) \
367 r method() override { \ 367 r method() override { \
368 MethodCall0<C, r> call(c_.get(), &C::method); \ 368 MethodCall0<C, r> call(c_.get(), &C::method); \
369 return call.Marshal(signaling_thread_); \ 369 return call.Marshal(RTC_FROM_HERE, signaling_thread_); \
370 } 370 }
371 371
372 #define PROXY_CONSTMETHOD0(r, method) \ 372 #define PROXY_CONSTMETHOD0(r, method) \
373 r method() const override { \ 373 r method() const override { \
374 ConstMethodCall0<C, r> call(c_.get(), &C::method); \ 374 ConstMethodCall0<C, r> call(c_.get(), &C::method); \
375 return call.Marshal(signaling_thread_); \ 375 return call.Marshal(RTC_FROM_HERE, signaling_thread_); \
376 } 376 }
377 377
378 #define PROXY_METHOD1(r, method, t1) \ 378 #define PROXY_METHOD1(r, method, t1) \
379 r method(t1 a1) override { \ 379 r method(t1 a1) override { \
380 MethodCall1<C, r, t1> call(c_.get(), &C::method, a1); \ 380 MethodCall1<C, r, t1> call(c_.get(), &C::method, a1); \
381 return call.Marshal(signaling_thread_); \ 381 return call.Marshal(RTC_FROM_HERE, signaling_thread_); \
382 } 382 }
383 383
384 #define PROXY_CONSTMETHOD1(r, method, t1) \ 384 #define PROXY_CONSTMETHOD1(r, method, t1) \
385 r method(t1 a1) const override { \ 385 r method(t1 a1) const override { \
386 ConstMethodCall1<C, r, t1> call(c_.get(), &C::method, a1); \ 386 ConstMethodCall1<C, r, t1> call(c_.get(), &C::method, a1); \
387 return call.Marshal(signaling_thread_); \ 387 return call.Marshal(RTC_FROM_HERE, signaling_thread_); \
388 } 388 }
389 389
390 #define PROXY_METHOD2(r, method, t1, t2) \ 390 #define PROXY_METHOD2(r, method, t1, t2) \
391 r method(t1 a1, t2 a2) override { \ 391 r method(t1 a1, t2 a2) override { \
392 MethodCall2<C, r, t1, t2> call(c_.get(), &C::method, a1, a2); \ 392 MethodCall2<C, r, t1, t2> call(c_.get(), &C::method, a1, a2); \
393 return call.Marshal(signaling_thread_); \ 393 return call.Marshal(RTC_FROM_HERE, signaling_thread_); \
394 } 394 }
395 395
396 #define PROXY_METHOD3(r, method, t1, t2, t3) \ 396 #define PROXY_METHOD3(r, method, t1, t2, t3) \
397 r method(t1 a1, t2 a2, t3 a3) override { \ 397 r method(t1 a1, t2 a2, t3 a3) override { \
398 MethodCall3<C, r, t1, t2, t3> call(c_.get(), &C::method, a1, a2, a3); \ 398 MethodCall3<C, r, t1, t2, t3> call(c_.get(), &C::method, a1, a2, a3); \
399 return call.Marshal(signaling_thread_); \ 399 return call.Marshal(RTC_FROM_HERE, signaling_thread_); \
400 } 400 }
401 401
402 #define PROXY_METHOD4(r, method, t1, t2, t3, t4) \ 402 #define PROXY_METHOD4(r, method, t1, t2, t3, t4) \
403 r method(t1 a1, t2 a2, t3 a3, t4 a4) override { \ 403 r method(t1 a1, t2 a2, t3 a3, t4 a4) override { \
404 MethodCall4<C, r, t1, t2, t3, t4> call(c_.get(), &C::method, a1, a2, a3, \ 404 MethodCall4<C, r, t1, t2, t3, t4> call(c_.get(), &C::method, a1, a2, a3, \
405 a4); \ 405 a4); \
406 return call.Marshal(signaling_thread_); \ 406 return call.Marshal(RTC_FROM_HERE, signaling_thread_); \
407 } 407 }
408 408
409 #define PROXY_METHOD5(r, method, t1, t2, t3, t4, t5) \ 409 #define PROXY_METHOD5(r, method, t1, t2, t3, t4, t5) \
410 r method(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5) override { \ 410 r method(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5) override { \
411 MethodCall5<C, r, t1, t2, t3, t4, t5> call(c_.get(), &C::method, a1, a2, \ 411 MethodCall5<C, r, t1, t2, t3, t4, t5> call(c_.get(), &C::method, a1, a2, \
412 a3, a4, a5); \ 412 a3, a4, a5); \
413 return call.Marshal(signaling_thread_); \ 413 return call.Marshal(RTC_FROM_HERE, signaling_thread_); \
414 } 414 }
415 415
416 // Define methods which should be invoked on the worker thread. 416 // Define methods which should be invoked on the worker thread.
417 #define PROXY_WORKER_METHOD1(r, method, t1) \ 417 #define PROXY_WORKER_METHOD1(r, method, t1) \
418 r method(t1 a1) override { \ 418 r method(t1 a1) override { \
419 MethodCall1<C, r, t1> call(c_.get(), &C::method, a1); \ 419 MethodCall1<C, r, t1> call(c_.get(), &C::method, a1); \
420 return call.Marshal(worker_thread_); \ 420 return call.Marshal(RTC_FROM_HERE, worker_thread_); \
421 } 421 }
422 422
423 #define PROXY_WORKER_METHOD2(r, method, t1, t2) \ 423 #define PROXY_WORKER_METHOD2(r, method, t1, t2) \
424 r method(t1 a1, t2 a2) override { \ 424 r method(t1 a1, t2 a2) override { \
425 MethodCall2<C, r, t1, t2> call(c_.get(), &C::method, a1, a2); \ 425 MethodCall2<C, r, t1, t2> call(c_.get(), &C::method, a1, a2); \
426 return call.Marshal(worker_thread_); \ 426 return call.Marshal(RTC_FROM_HERE, worker_thread_); \
427 } 427 }
428 428
429 #define END_SIGNALING_PROXY() \ 429 #define END_SIGNALING_PROXY() \
430 private: \ 430 private: \
431 void Release_s() { c_ = NULL; } \ 431 void Release_s() { c_ = NULL; } \
432 mutable rtc::Thread* signaling_thread_; \ 432 mutable rtc::Thread* signaling_thread_; \
433 rtc::scoped_refptr<INTERNAL_CLASS> c_; \ 433 rtc::scoped_refptr<INTERNAL_CLASS> c_; \
434 } \ 434 } \
435 ; 435 ;
436 436
437 #define END_PROXY() \ 437 #define END_PROXY() \
438 private: \ 438 private: \
439 void Release_s() { c_ = NULL; } \ 439 void Release_s() { c_ = NULL; } \
440 mutable rtc::Thread* signaling_thread_; \ 440 mutable rtc::Thread* signaling_thread_; \
441 mutable rtc::Thread* worker_thread_; \ 441 mutable rtc::Thread* worker_thread_; \
442 rtc::scoped_refptr<INTERNAL_CLASS> c_; \ 442 rtc::scoped_refptr<INTERNAL_CLASS> c_; \
443 } \ 443 } \
444 ; 444 ;
445 445
446 } // namespace webrtc 446 } // namespace webrtc
447 447
448 #endif // WEBRTC_API_PROXY_H_ 448 #endif // WEBRTC_API_PROXY_H_
OLDNEW
« no previous file with comments | « webrtc/api/peerconnectionfactoryproxy.h ('k') | webrtc/api/quicdatachannel.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698