Use AsyncInvoker in DtmfSender instead of MessageHandler
Bug: webrtc:9702
Change-Id: Ib9a9a2cf5bbb7aff24e6690deca51a021961ead3
Reviewed-on: https://webrtc-review.googlesource.com/97182
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24518}
diff --git a/pc/dtmfsender.h b/pc/dtmfsender.h
index 7b45a1f..59ab549 100644
--- a/pc/dtmfsender.h
+++ b/pc/dtmfsender.h
@@ -15,14 +15,14 @@
#include "api/dtmfsenderinterface.h"
#include "api/proxy.h"
+#include "rtc_base/asyncinvoker.h"
#include "rtc_base/constructormagic.h"
-#include "rtc_base/messagehandler.h"
#include "rtc_base/refcount.h"
#include "rtc_base/thread.h"
// DtmfSender is the native implementation of the RTCDTMFSender defined by
// the WebRTC W3C Editor's Draft.
-// http://dev.w3.org/2011/webrtc/editor/webrtc.html
+// https://w3c.github.io/webrtc-pc/#rtcdtmfsender
namespace webrtc {
@@ -45,9 +45,7 @@
virtual ~DtmfProviderInterface() {}
};
-class DtmfSender : public DtmfSenderInterface,
- public sigslot::has_slots<>,
- public rtc::MessageHandler {
+class DtmfSender : public DtmfSenderInterface, public sigslot::has_slots<> {
public:
static rtc::scoped_refptr<DtmfSender> Create(rtc::Thread* signaling_thread,
DtmfProviderInterface* provider);
@@ -70,8 +68,7 @@
private:
DtmfSender();
- // Implements MessageHandler.
- void OnMessage(rtc::Message* msg) override;
+ void QueueInsertDtmf(const rtc::Location& posted_from, uint32_t delay_ms);
// The DTMF sending task.
void DoInsertDtmf();
@@ -86,6 +83,9 @@
std::string tones_;
int duration_;
int inter_tone_gap_;
+ // Invoker for running delayed tasks which feed the DTMF provider one tone at
+ // a time.
+ rtc::AsyncInvoker dtmf_driver_;
RTC_DISALLOW_COPY_AND_ASSIGN(DtmfSender);
};