From 60ceb796b2ca9bab5d52951f423566d6ba78be63 Mon Sep 17 00:00:00 2001 From: Henri Herscher Date: Fri, 10 Feb 2006 15:54:18 +0000 Subject: When replaying pcap file, yield control to other thread at each received packet (flow control) git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@163 09dcff7a-b715-0410-9601-b79a96267cd0 --- orkaudio/audiocaptureplugins/voip/VoIp.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'orkaudio') diff --git a/orkaudio/audiocaptureplugins/voip/VoIp.cpp b/orkaudio/audiocaptureplugins/voip/VoIp.cpp index 57ae7a9..573b5f9 100644 --- a/orkaudio/audiocaptureplugins/voip/VoIp.cpp +++ b/orkaudio/audiocaptureplugins/voip/VoIp.cpp @@ -351,6 +351,15 @@ void HandlePacket(u_char *param, const struct pcap_pkthdr *header, const u_char int ipHeaderLength = ipHeader->ip_hl*4; u_char* ipPacketEnd = (u_char*)ipHeader + ipHeader->ip_len; + if(!s_liveCapture) + { + // This is a pcap file replay, make sure Orkaudio won't be flooded by too many + // packets at a time by yielding control to other threads. + ACE_Time_Value yield; + yield.set(0,1); // 1 us + ACE_OS::sleep(yield); + } + if(ipHeader->ip_p == IPPROTO_UDP) { UdpHeaderStruct* udpHeader = (UdpHeaderStruct*)((char *)ipHeader + ipHeaderLength); -- cgit v1.2.3