Chromium Code Reviews| Index: talk/app/webrtc/proxy.h |
| diff --git a/talk/app/webrtc/proxy.h b/talk/app/webrtc/proxy.h |
| index 76a5c1eff2819e398983143f2c5e2fbbf452100e..d0a4673e3545e0593efad9ab05599d0909e1a819 100644 |
| --- a/talk/app/webrtc/proxy.h |
| +++ b/talk/app/webrtc/proxy.h |
| @@ -81,6 +81,11 @@ class ReturnType { |
| void Invoke(C* c, M m, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) { |
| r_ = (c->*m)(a1, a2, a3, a4, a5); |
| } |
| + template<typename C, typename M, typename T1, typename T2, typename T3, |
| + typename T4, typename T5, typename T6> |
| + void Invoke(C* c, M m, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6) { |
| + r_ = (c->*m)(a1, a2, a3, a4, a5, a6); |
| + } |
|
hbos
2015/06/12 12:46:55
Needed a 6th parameter...
|
| R value() { return r_; } |
| @@ -312,6 +317,36 @@ class MethodCall5 : public rtc::Message, |
| T5 a5_; |
| }; |
| +template <typename C, typename R, typename T1, typename T2, typename T3, |
| + typename T4, typename T5, typename T6> |
| +class MethodCall6 : public rtc::Message, |
| + public rtc::MessageHandler { |
| + public: |
| + typedef R (C::*Method)(T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6); |
| + MethodCall6(C* c, Method m, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6) |
| + : c_(c), m_(m), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6) {} |
| + |
| + R Marshal(rtc::Thread* t) { |
| + internal::SynchronousMethodCall(this).Invoke(t); |
| + return r_.value(); |
| + } |
| + |
| + private: |
| + void OnMessage(rtc::Message*) { |
| + r_.Invoke(c_, m_, a1_, a2_, a3_, a4_, a5_, a6_); |
| + } |
| + |
| + C* c_; |
| + Method m_; |
| + ReturnType<R> r_; |
| + T1 a1_; |
| + T2 a2_; |
| + T3 a3_; |
| + T4 a4_; |
| + T5 a5_; |
| + T6 a6_; |
| +}; |
| + |
| #define BEGIN_PROXY_MAP(c) \ |
| class c##Proxy : public c##Interface { \ |
| protected: \ |
| @@ -377,6 +412,13 @@ class MethodCall5 : public rtc::Message, |
| return call.Marshal(owner_thread_); \ |
| } |
| +#define PROXY_METHOD6(r, method, t1, t2, t3, t4, t5, t6) \ |
| + r method(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6) override { \ |
| + MethodCall6<C, r, t1, t2, t3, t4, t5, t6> call(c_.get(), &C::method, a1, \ |
| + a2, a3, a4, a5, a6); \ |
| + return call.Marshal(owner_thread_); \ |
| + } |
| + |
| #define END_PROXY() \ |
| private:\ |
| void Release_s() {\ |