From 1f60c821a33203576db8ba0e5ec8660881c741cf Mon Sep 17 00:00:00 2001 From: Henri Herscher Date: Thu, 18 May 2006 19:11:16 +0000 Subject: pcap directory replay now processes pcap files sequentially. git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@236 09dcff7a-b715-0410-9601-b79a96267cd0 --- orkaudio/audiocaptureplugins/voip/VoIp.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/orkaudio/audiocaptureplugins/voip/VoIp.cpp b/orkaudio/audiocaptureplugins/voip/VoIp.cpp index dd14af8..103336f 100644 --- a/orkaudio/audiocaptureplugins/voip/VoIp.cpp +++ b/orkaudio/audiocaptureplugins/voip/VoIp.cpp @@ -24,6 +24,7 @@ #include "ace/OS_NS_ctype.h" #include "ace/Thread_Manager.h" #include "ace/Thread_Mutex.h" +#include "ace/Thread_Semaphore.h" #include "AudioCapturePlugin.h" #include "AudioCapturePluginCommon.h" #include "Utils.h" @@ -47,6 +48,7 @@ static LoggerPtr s_sipExtractionLog; static LoggerPtr s_voipPluginLog; static time_t s_lastHooveringTime; static ACE_Thread_Mutex s_mutex; +static ACE_Thread_Semaphore s_replaySemaphore; static bool s_liveCapture; VoIpConfigTopObjectRef g_VoIpConfigTopObjectRef; @@ -527,6 +529,11 @@ void HandlePacket(u_char *param, const struct pcap_pkthdr *header, const u_char void SingleDeviceCaptureThreadHandler(pcap_t* pcapHandle) { + if(!s_liveCapture) + { + // File replay, make sure that only one file is replayed at a time + s_replaySemaphore.acquire(); + } if(pcapHandle) { CStdString log; @@ -545,6 +552,11 @@ void SingleDeviceCaptureThreadHandler(pcap_t* pcapHandle) { LOG4CXX_ERROR(s_packetLog, "Cannot start capturing, pcap handle is null"); } + if(!s_liveCapture) + { + // Pass token to for next file replay + s_replaySemaphore.release(); + } } class VoIp -- cgit v1.2.3