do not busy loop while sending
This commit is contained in:
parent
e158175819
commit
a5179cd17f
@ -198,6 +198,12 @@ namespace ix
|
|||||||
while (!isSendBufferEmpty() && !_requestInitCancellation)
|
while (!isSendBufferEmpty() && !_requestInitCancellation)
|
||||||
{
|
{
|
||||||
sendOnSocket();
|
sendOnSocket();
|
||||||
|
|
||||||
|
// Sleep 10ms between each send so that we dont busy loop
|
||||||
|
// A better strategy would be to select on the socket to
|
||||||
|
// check whether we can write to it without blocking
|
||||||
|
std::chrono::duration<double, std::micro> duration(10);
|
||||||
|
std::this_thread::sleep_for(duration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pollResult == PollResultType_ReadyForRead)
|
else if (pollResult == PollResultType_ReadyForRead)
|
||||||
|
@ -6,10 +6,10 @@ osName = platform.system()
|
|||||||
print('os name = {}'.format(osName))
|
print('os name = {}'.format(osName))
|
||||||
|
|
||||||
root = os.path.dirname(os.path.realpath(__file__))
|
root = os.path.dirname(os.path.realpath(__file__))
|
||||||
buildDir = os.path.join(root, 'build')
|
buildDir = os.path.join(root, 'build', osName)
|
||||||
|
|
||||||
if not os.path.exists(buildDir):
|
if not os.path.exists(buildDir):
|
||||||
os.mkdir(buildDir)
|
os.makedirs(buildDir)
|
||||||
|
|
||||||
os.chdir(buildDir)
|
os.chdir(buildDir)
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ sanitizerFlags = sanitizersFlags[sanitizer]
|
|||||||
# os.environ['CC'] = 'clang-cl'
|
# os.environ['CC'] = 'clang-cl'
|
||||||
# os.environ['CXX'] = 'clang-cl'
|
# os.environ['CXX'] = 'clang-cl'
|
||||||
|
|
||||||
cmakeCmd = 'cmake -DCMAKE_BUILD_TYPE=Debug {} {} ..'.format(generator, sanitizerFlags)
|
cmakeCmd = 'cmake -DCMAKE_BUILD_TYPE=Debug {} {} ../..'.format(generator, sanitizerFlags)
|
||||||
print(cmakeCmd)
|
print(cmakeCmd)
|
||||||
ret = os.system(cmakeCmd)
|
ret = os.system(cmakeCmd)
|
||||||
assert ret == 0, 'CMake failed, exiting'
|
assert ret == 0, 'CMake failed, exiting'
|
||||||
@ -67,6 +67,7 @@ def findFiles(prefix):
|
|||||||
|
|
||||||
# We need to copy the zlib DLL in the current work directory
|
# We need to copy the zlib DLL in the current work directory
|
||||||
shutil.copy(os.path.join(
|
shutil.copy(os.path.join(
|
||||||
|
'..',
|
||||||
'..',
|
'..',
|
||||||
'..',
|
'..',
|
||||||
'third_party',
|
'third_party',
|
||||||
|
52
ws/test_ws.sh
Normal file
52
ws/test_ws.sh
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
rm -rf /tmp/ws_test
|
||||||
|
mkdir -p /tmp/ws_test
|
||||||
|
|
||||||
|
# Start a transport server
|
||||||
|
cd /tmp/ws_test
|
||||||
|
ws transfer --port 8090 --pidfile /tmp/ws_test/pidfile &
|
||||||
|
|
||||||
|
# Wait until the transfer server is up
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
nc -zv 127.0.0.1 8090 && {
|
||||||
|
echo "Transfer server up and running"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
echo "sleep ..."
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
# Start a receiver
|
||||||
|
mkdir -p /tmp/ws_test/receive
|
||||||
|
cd /tmp/ws_test/receive
|
||||||
|
ws receive ws://127.0.0.1:8090 &
|
||||||
|
|
||||||
|
mkdir /tmp/ws_test/send
|
||||||
|
cd /tmp/ws_test/send
|
||||||
|
# mkfile 10m 10M_file
|
||||||
|
dd if=/dev/urandom of=10M_file count=10000 bs=1024
|
||||||
|
|
||||||
|
# Start the sender job
|
||||||
|
ws send ws://127.0.0.1:8090 10M_file
|
||||||
|
|
||||||
|
# Wait until the file has been written to disk
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
if test -f /tmp/ws_test/receive/10M_file ; then
|
||||||
|
echo "Received file does exists, exiting loop"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
echo "sleep ..."
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
cksum /tmp/ws_test/send/10M_file
|
||||||
|
cksum /tmp/ws_test/receive/10M_file
|
||||||
|
|
||||||
|
# Give some time to ws receive to terminate
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
kill `cat /tmp/ws_test/pidfile`
|
Loading…
x
Reference in New Issue
Block a user