summaryrefslogtreecommitdiff
path: root/orkaudio
diff options
context:
space:
mode:
Diffstat (limited to 'orkaudio')
-rw-r--r--orkaudio/OrkAudio.cpp2
-rw-r--r--orkaudio/audiocaptureplugins/common/AudioCapturePluginCommon.h6
-rw-r--r--orkaudio/audiocaptureplugins/voip/RtpSession.cpp186
-rw-r--r--orkaudio/audiocaptureplugins/voip/RtpSession.h8
-rw-r--r--orkaudio/audiocaptureplugins/voip/VoIp.cpp112
5 files changed, 266 insertions, 48 deletions
diff --git a/orkaudio/OrkAudio.cpp b/orkaudio/OrkAudio.cpp
index be0dead..0505250 100644
--- a/orkaudio/OrkAudio.cpp
+++ b/orkaudio/OrkAudio.cpp
@@ -218,6 +218,8 @@ void MainThread()
ObjectFactory::GetSingleton()->RegisterObject(objRef);
objRef.reset(new PauseMsg);
ObjectFactory::GetSingleton()->RegisterObject(objRef);
+ objRef.reset(new StopMsg);
+ ObjectFactory::GetSingleton()->RegisterObject(objRef);
//objRef.reset(new TestMsg);
//ObjectFactory::GetSingleton()->RegisterObject(objRef);
diff --git a/orkaudio/audiocaptureplugins/common/AudioCapturePluginCommon.h b/orkaudio/audiocaptureplugins/common/AudioCapturePluginCommon.h
index c406c19..6c3b6ec 100644
--- a/orkaudio/audiocaptureplugins/common/AudioCapturePluginCommon.h
+++ b/orkaudio/audiocaptureplugins/common/AudioCapturePluginCommon.h
@@ -30,9 +30,9 @@ DLL_EXPORT void __CDECL__ Run();
DLL_EXPORT void __CDECL__ Initialize();
DLL_EXPORT void __CDECL__ Shutdown();
DLL_EXPORT void __CDECL__ Configure(DOMNode*);
-DLL_EXPORT void __CDECL__ StartCapture(CStdString& party, CStdString& orkuid);
-DLL_EXPORT void __CDECL__ StopCapture(CStdString& party);
-DLL_EXPORT void __CDECL__ PauseCapture(CStdString& party, CStdString& orkuid);
+DLL_EXPORT void __CDECL__ StartCapture(CStdString& party, CStdString& orkuid, CStdString& nativecallid);
+DLL_EXPORT void __CDECL__ StopCapture(CStdString& party, CStdString& orkuid, CStdString& nativecallid);
+DLL_EXPORT void __CDECL__ PauseCapture(CStdString& party, CStdString& orkuid, CStdString& nativecallid);
DLL_EXPORT void __CDECL__ SetOnHold(CStdString& port, CStdString& orkuid);
DLL_EXPORT void __CDECL__ SetOffHold(CStdString& port, CStdString& orkuid);
}
diff --git a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp
index 93417c8..0927ae1 100644
--- a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp
+++ b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp
@@ -1236,6 +1236,18 @@ bool RtpSession::PartyMatches(CStdString &party)
return false;
}
+bool RtpSession::NativeCallIdMatches(CStdString& callid)
+{
+ if(callid.size() > 0)
+ {
+ if(m_callId.CompareNoCase(callid) == 0)
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
void RtpSession::ReportSkinnyCallInfo(SkCallInfoStruct* callInfo, IpHeaderStruct* ipHeader)
{
std::map<CStdString, CStdString>::iterator pair;
@@ -2547,6 +2559,40 @@ void RtpSessions::StartCaptureOrkuid(CStdString& orkuid)
LOG4CXX_INFO(m_log, logMsg);
}
+CStdString RtpSessions::StartCaptureNativeCallId(CStdString& nativecallid)
+{
+ std::map<CStdString, RtpSessionRef>::iterator pair;
+ bool found = false;
+ CStdString logMsg;
+ RtpSessionRef session;
+ CStdString orkUid = CStdString("");
+
+ for(pair = m_byIpAndPort.begin(); pair != m_byIpAndPort.end() && found == false; pair++)
+ {
+ session = pair->second;
+
+ if(session->NativeCallIdMatches(nativecallid))
+ {
+ session->m_keep = true;
+ found = true;
+ orkUid = session->GetOrkUid();
+ }
+ }
+
+ if(found)
+ {
+ logMsg.Format("[%s] StartCaptureNativeCallId: Started capture, nativecallid:%s", session->m_trackingId, nativecallid);
+ }
+ else
+ {
+ logMsg.Format("StartCaptureNativeCallId: No session has native callid:%s", nativecallid);
+ }
+
+ LOG4CXX_INFO(m_log, logMsg);
+
+ return orkUid;
+}
+
CStdString RtpSessions::StartCapture(CStdString& party)
{
std::map<CStdString, RtpSessionRef>::iterator pair;
@@ -2581,12 +2627,13 @@ CStdString RtpSessions::StartCapture(CStdString& party)
return orkUid;
}
-void RtpSessions::PauseCapture(CStdString& party)
+CStdString RtpSessions::PauseCapture(CStdString& party)
{
std::map<CStdString, RtpSessionRef>::iterator pair;
bool found = false;
CStdString logMsg;
RtpSessionRef session;
+ CStdString orkUid = CStdString("");
for(pair = m_byIpAndPort.begin(); pair != m_byIpAndPort.end() && found == false; pair++)
{
@@ -2596,6 +2643,7 @@ void RtpSessions::PauseCapture(CStdString& party)
{
session->m_keep = false;
found = true;
+ orkUid = session->GetOrkUid();
}
}
@@ -2609,6 +2657,8 @@ void RtpSessions::PauseCapture(CStdString& party)
}
LOG4CXX_INFO(m_log, logMsg);
+
+ return orkUid;
}
void RtpSessions::PauseCaptureOrkuid(CStdString& orkuid)
@@ -2641,6 +2691,140 @@ void RtpSessions::PauseCaptureOrkuid(CStdString& orkuid)
LOG4CXX_INFO(m_log, logMsg);
}
+CStdString RtpSessions::PauseCaptureNativeCallId(CStdString& nativecallid)
+{
+ std::map<CStdString, RtpSessionRef>::iterator pair;
+ bool found = false;
+ CStdString logMsg;
+ RtpSessionRef session;
+ CStdString orkUid = CStdString("");
+
+ for(pair = m_byIpAndPort.begin(); pair != m_byIpAndPort.end() && found == false; pair++)
+ {
+ session = pair->second;
+
+ if(session->NativeCallIdMatches(nativecallid))
+ {
+ session->m_keep = false;
+ found = true;
+ orkUid = session->GetOrkUid();
+ }
+ }
+
+ if(found)
+ {
+ logMsg.Format("[%s] PauseCaptureNativeCallId: Paused capture, nativecallid:%s", session->m_trackingId, nativecallid);
+ }
+ else
+ {
+ logMsg.Format("PauseCaptureNativeCallId: No session has native callid:%s", nativecallid);
+ }
+
+ LOG4CXX_INFO(m_log, logMsg);
+
+ return orkUid;
+}
+
+CStdString RtpSessions::StopCapture(CStdString& party)
+{
+ std::map<CStdString, RtpSessionRef>::iterator pair;
+ bool found = false;
+ CStdString logMsg;
+ RtpSessionRef session;
+ CStdString orkUid = CStdString("");
+
+ for(pair = m_byIpAndPort.begin(); pair != m_byIpAndPort.end() && found == false; pair++)
+ {
+ session = pair->second;
+
+ if (session->PartyMatches(party))
+ {
+ found = true;
+ orkUid = session->GetOrkUid();
+ }
+ }
+
+ if(found)
+ {
+ logMsg.Format("[%s] StopCapture: stopping capture, party:%s", session->m_trackingId, party);
+ LOG4CXX_INFO(m_log, logMsg);
+ Stop(session);
+ }
+ else
+ {
+ logMsg.Format("StopCapture: No session has party %s", party);
+ LOG4CXX_INFO(m_log, logMsg);
+ }
+
+ return orkUid;
+}
+
+void RtpSessions::StopCaptureOrkuid(CStdString& orkuid)
+{
+ std::map<CStdString, RtpSessionRef>::iterator pair;
+ bool found = false;
+ CStdString logMsg;
+ RtpSessionRef session;
+
+ for(pair = m_byIpAndPort.begin(); pair != m_byIpAndPort.end() && found == false; pair++)
+ {
+ session = pair->second;
+
+ if(session->OrkUidMatches(orkuid))
+ {
+ found = true;
+ }
+ }
+
+ if(found)
+ {
+ logMsg.Format("[%s] StopCaptureOrkuid: stopping capture, orkuid:%s", session->m_trackingId, orkuid);
+ LOG4CXX_INFO(m_log, logMsg);
+ Stop(session);
+ }
+ else
+ {
+ logMsg.Format("StopCaptureOrkuid: No session has orkuid:%s", orkuid);
+ LOG4CXX_INFO(m_log, logMsg);
+ Stop(session);
+ }
+}
+
+CStdString RtpSessions::StopCaptureNativeCallId(CStdString& nativecallid)
+{
+ std::map<CStdString, RtpSessionRef>::iterator pair;
+ bool found = false;
+ CStdString logMsg;
+ RtpSessionRef session;
+ CStdString orkUid = CStdString("");
+
+ for(pair = m_byIpAndPort.begin(); pair != m_byIpAndPort.end() && found == false; pair++)
+ {
+ session = pair->second;
+
+ if(session->NativeCallIdMatches(nativecallid))
+ {
+ found = true;
+ orkUid = session->GetOrkUid();
+ }
+ }
+
+ if(found)
+ {
+ logMsg.Format("[%s] StopCaptureNativeCallId: stopping capture, nativecallid:%s", session->m_trackingId, nativecallid);
+ LOG4CXX_INFO(m_log, logMsg);
+ Stop(session);
+ }
+ else
+ {
+ logMsg.Format("StopCaptureNativeCallId: No session has native callid:%s", nativecallid);
+ LOG4CXX_INFO(m_log, logMsg);
+ Stop(session);
+ }
+
+ return orkUid;
+}
+
void RtpSessions::SaveLocalPartyMap(CStdString& oldparty, CStdString& newparty)
{
m_localPartyMap.insert(std::make_pair(oldparty, newparty));
diff --git a/orkaudio/audiocaptureplugins/voip/RtpSession.h b/orkaudio/audiocaptureplugins/voip/RtpSession.h
index 30efc85..804511c 100644
--- a/orkaudio/audiocaptureplugins/voip/RtpSession.h
+++ b/orkaudio/audiocaptureplugins/voip/RtpSession.h
@@ -153,6 +153,7 @@ public:
void ReportRtcpSrcDescription(RtcpSrcDescriptionPacketInfoRef& rtcpInfo);
bool OrkUidMatches(CStdString &oUid);
bool PartyMatches(CStdString &party);
+ bool NativeCallIdMatches(CStdString &callid);
void UpdateMetadataSkinny();
void ReportSkinnyCallInfo(SkCallInfoStruct*, IpHeaderStruct* ipHeader);
CStdString GetOrkUid();
@@ -265,8 +266,13 @@ public:
EndpointInfoRef GetEndpointInfo(struct in_addr endpointIp);
CStdString StartCapture(CStdString& party);
void StartCaptureOrkuid(CStdString& orkuid);
- void PauseCapture(CStdString& party);
+ CStdString StartCaptureNativeCallId(CStdString& nativecallid);
+ CStdString PauseCaptureNativeCallId(CStdString& nativecallid);
+ CStdString PauseCapture(CStdString& party);
void PauseCaptureOrkuid(CStdString& orkuid);
+ CStdString StopCapture(CStdString& party);
+ void StopCaptureOrkuid(CStdString& orkuid);
+ CStdString StopCaptureNativeCallId(CStdString& nativecallid);
void SaveLocalPartyMap(CStdString& oldparty, CStdString& newparty);
CStdString GetLocalPartyMap(CStdString& oldlocalparty);
diff --git a/orkaudio/audiocaptureplugins/voip/VoIp.cpp b/orkaudio/audiocaptureplugins/voip/VoIp.cpp
index 6640590..cc0bf77 100644
--- a/orkaudio/audiocaptureplugins/voip/VoIp.cpp
+++ b/orkaudio/audiocaptureplugins/voip/VoIp.cpp
@@ -85,9 +85,9 @@ public:
void Initialize();
void Run();
void Shutdown();
- void StartCapture(CStdString& port, CStdString& orkuid);
- void StopCapture(CStdString& port);
- void PauseCapture(CStdString& port, CStdString& orkuid);
+ void StartCapture(CStdString& port, CStdString& orkuid, CStdString& nativecallid);
+ void StopCapture(CStdString& port, CStdString& orkuid, CStdString& nativecallid);
+ void PauseCapture(CStdString& port, CStdString& orkuid, CStdString& nativecallid);
void SetOnHold(CStdString& port, CStdString& orkuid);
void SetOffHold(CStdString& port, CStdString& orkuid);
void ReportPcapStats();
@@ -3563,19 +3563,73 @@ void VoIp::Shutdown()
#endif
}
-void VoIp::StartCapture(CStdString& port, CStdString& orkuid)
+void VoIp::StartCapture(CStdString& party, CStdString& orkuid, CStdString& nativecallid)
{
- ;
+ CStdString logMsg;
+
+ logMsg.Format("StartCapture: party:%s orkuid:%s nativecallid:%s", party, orkuid, nativecallid);
+ LOG4CXX_INFO(s_voipPluginLog, logMsg);
+
+ MutexSentinel mutexSentinel(s_mutex);
+
+ if(orkuid.size())
+ {
+ RtpSessionsSingleton::instance()->StartCaptureOrkuid(orkuid);
+ }
+ else if(party.size())
+ {
+ orkuid = RtpSessionsSingleton::instance()->StartCapture(party);
+ }
+ else if(nativecallid.size())
+ {
+ orkuid = RtpSessionsSingleton::instance()->StartCaptureNativeCallId(nativecallid);
+ }
}
-void VoIp::PauseCapture(CStdString& port, CStdString& orkuid)
+void VoIp::PauseCapture(CStdString& party, CStdString& orkuid, CStdString& nativecallid)
{
- ;
+ CStdString logMsg;
+
+ logMsg.Format("PauseCapture: party:%s orkuid:%s nativecallid:%s", party, orkuid, nativecallid);
+ LOG4CXX_INFO(s_voipPluginLog, logMsg);
+
+ MutexSentinel mutexSentinel(s_mutex);
+
+ if(orkuid.size())
+ {
+ RtpSessionsSingleton::instance()->PauseCaptureOrkuid(orkuid);
+ }
+ else if(party.size())
+ {
+ orkuid = RtpSessionsSingleton::instance()->PauseCapture(party);
+ }
+ else if(nativecallid.size())
+ {
+ orkuid = RtpSessionsSingleton::instance()->PauseCaptureNativeCallId(nativecallid);
+ }
}
-void VoIp::StopCapture(CStdString& port)
+void VoIp::StopCapture(CStdString& party, CStdString& orkuid, CStdString& nativecallid)
{
- ;
+ CStdString logMsg;
+
+ logMsg.Format("StopCapture: party:%s orkuid:%s nativecallid:%s", party, orkuid, nativecallid);
+ LOG4CXX_INFO(s_voipPluginLog, logMsg);
+
+ MutexSentinel mutexSentinel(s_mutex);
+
+ if(orkuid.size())
+ {
+ RtpSessionsSingleton::instance()->StopCaptureOrkuid(orkuid);
+ }
+ else if(party.size())
+ {
+ orkuid = RtpSessionsSingleton::instance()->StopCapture(party);
+ }
+ else if(nativecallid.size())
+ {
+ orkuid = RtpSessionsSingleton::instance()->StopCaptureNativeCallId(nativecallid);
+ }
}
void VoIp::SetOnHold(CStdString& port, CStdString& orkuid)
@@ -3603,47 +3657,19 @@ void __CDECL__ Shutdown()
VoIpSingleton::instance()->Shutdown();
}
-void __CDECL__ StartCapture(CStdString& party, CStdString& orkuid)
+void __CDECL__ StartCapture(CStdString& party, CStdString& orkuid, CStdString& nativecallid)
{
- CStdString logMsg;
-
- logMsg.Format("StartCapture: party:%s orkuid:%s", party, orkuid);
- LOG4CXX_INFO(s_voipPluginLog, logMsg);
-
- MutexSentinel mutexSentinel(s_mutex);
-
- if(orkuid.size())
- {
- RtpSessionsSingleton::instance()->StartCaptureOrkuid(orkuid);
- }
- else
- {
- orkuid = RtpSessionsSingleton::instance()->StartCapture(party);
- }
+ VoIpSingleton::instance()->StartCapture(party, orkuid, nativecallid);
}
-void __CDECL__ PauseCapture(CStdString& party, CStdString& orkuid)
+void __CDECL__ PauseCapture(CStdString& party, CStdString& orkuid, CStdString& nativecallid)
{
- CStdString logMsg;
-
- logMsg.Format("PauseCapture: party:%s orkuid:%s", party, orkuid);
- LOG4CXX_INFO(s_voipPluginLog, logMsg);
-
- MutexSentinel mutexSentinel(s_mutex);
-
- if(orkuid.size())
- {
- RtpSessionsSingleton::instance()->PauseCaptureOrkuid(orkuid);
- }
- else
- {
- RtpSessionsSingleton::instance()->PauseCapture(party);
- }
+ VoIpSingleton::instance()->PauseCapture(party, orkuid, nativecallid);
}
-void __CDECL__ StopCapture(CStdString& party)
+void __CDECL__ StopCapture(CStdString& party, CStdString& orkuid, CStdString& nativecallid)
{
- ;
+ VoIpSingleton::instance()->StopCapture(party, orkuid, nativecallid);
}
void __CDECL__ SetOnHold(CStdString& port, CStdString& orkuid)