/* * Copyright 2017 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #include "api/proxy.h" namespace webrtc { namespace internal { SynchronousMethodCall::SynchronousMethodCall(rtc::MessageHandler* proxy) : proxy_(proxy) {} SynchronousMethodCall::~SynchronousMethodCall() = default; void SynchronousMethodCall::Invoke(const rtc::Location& posted_from, rtc::Thread* t) { if (t->IsCurrent()) { proxy_->OnMessage(nullptr); } else { t->Post(posted_from, this, 0); e_.Wait(rtc::Event::kForever); } } void SynchronousMethodCall::OnMessage(rtc::Message*) { proxy_->OnMessage(nullptr); e_.Set(); } } // namespace internal } // namespace webrtc