Module: sems Branch: master Commit: e475abbdf8647031774fdc52fb80319215a22756 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=e475abbdf8647031774fdc52fb80319215a22756
Author: Raphael Coeffic <[email protected]> Committer: Raphael Coeffic <[email protected]> Date: Thu Apr 26 07:45:52 2012 +0200 decoupled dtmf detector from AmSession. --- core/AmDtmfDetector.cpp | 6 +++--- core/AmDtmfDetector.h | 16 ++++++++++++++-- core/AmSession.h | 3 ++- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/core/AmDtmfDetector.cpp b/core/AmDtmfDetector.cpp index 3a1e148..c6cfaf3 100644 --- a/core/AmDtmfDetector.cpp +++ b/core/AmDtmfDetector.cpp @@ -176,8 +176,8 @@ void AmSipDtmfDetector::process(AmSipDtmfEvent *evt) // // AmDtmfDetector methods // -AmDtmfDetector::AmDtmfDetector(AmSession *session) - : m_session(session), m_rtpDetector(this), +AmDtmfDetector::AmDtmfDetector(AmDtmfSink *dtmf_sink) + : m_dtmfSink(dtmf_sink), m_rtpDetector(this), m_sipDetector(this), m_eventPending(false), m_sipEventReceived(false), m_inbandEventReceived(false), m_rtpEventReceived(false), @@ -366,7 +366,7 @@ void AmDtmfDetector::reportEvent() long duration = (m_lastReportTime.tv_sec - m_startTime.tv_sec) * 1000 + (m_lastReportTime.tv_usec - m_startTime.tv_usec) / 1000; - m_session->postDtmfEvent(new AmDtmfEvent(m_currentEvent, duration)); + m_dtmfSink->postDtmfEvent(new AmDtmfEvent(m_currentEvent, duration)); m_eventPending = false; m_sipEventReceived = false; m_rtpEventReceived = false; diff --git a/core/AmDtmfDetector.h b/core/AmDtmfDetector.h index 5090a2b..88567e9 100644 --- a/core/AmDtmfDetector.h +++ b/core/AmDtmfDetector.h @@ -379,6 +379,18 @@ class AmRtpDtmfDetector }; /** + * \brief DTMF sink class + * + * This class is an interface for components that whish to + * receive DTMF event notification. + */ +class AmDtmfSink +{ +public: + virtual void postDtmfEvent(AmDtmfEvent *) = 0; +}; + +/** * \brief DTMF detector class * * This class collects DTMF info from three sources: RTP (RFC 2833), @@ -395,7 +407,7 @@ class AmDtmfDetector /** * Session this class belongs to. */ - AmSession *m_session; + AmDtmfSink *m_dtmfSink; AmRtpDtmfDetector m_rtpDetector; AmSipDtmfDetector m_sipDetector; std::auto_ptr<AmInbandDtmfDetector> m_inbandDetector; @@ -450,7 +462,7 @@ class AmDtmfDetector * Constructor * @param session is the owner of this class instance */ - AmDtmfDetector(AmSession *session); + AmDtmfDetector(AmDtmfSink *dtmf_sink); virtual ~AmDtmfDetector() {} void checkTimeout(); diff --git a/core/AmSession.h b/core/AmSession.h index 0413843..74d131e 100644 --- a/core/AmSession.h +++ b/core/AmSession.h @@ -74,7 +74,8 @@ class AmSession : public AmEventQueue, public AmEventHandler, public AmSipDialogEventHandler, - public AmMediaSession + public AmMediaSession, + public AmDtmfSink { AmMutex audio_mut; _______________________________________________ Semsdev mailing list [email protected] http://lists.iptel.org/mailman/listinfo/semsdev
