diff options
author | Henri Herscher <henri@oreka.org> | 2006-02-10 15:54:18 +0000 |
---|---|---|
committer | Henri Herscher <henri@oreka.org> | 2006-02-10 15:54:18 +0000 |
commit | 60ceb796b2ca9bab5d52951f423566d6ba78be63 (patch) | |
tree | 35bb64a6b05a168fc0c24fb9c587914f77167d9e /orkaudio/audiocaptureplugins/voip/VoIp.cpp | |
parent | cc42e56c2cb8dcfe467b536f0a4096252b3c5432 (diff) |
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
Diffstat (limited to 'orkaudio/audiocaptureplugins/voip/VoIp.cpp')
-rw-r--r-- | orkaudio/audiocaptureplugins/voip/VoIp.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
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); |