#4740 Forced delay on heartbeat rather than each clipboard chunk

This commit is contained in:
Xinyu Hou 2016-09-13 11:06:06 -04:00 committed by Andrew Nelless
parent d14d907ac1
commit 8ab69a22ae
1 changed files with 38 additions and 41 deletions

View File

@ -33,10 +33,9 @@
#include <fstream> #include <fstream>
#define SEND_THRESHOLD 0.005f
using namespace std; using namespace std;
#define FAKE_HEARTBEAT_THRESHOLD 3
#define CHUNK_SIZE 512 * 1024; // 512kb #define CHUNK_SIZE 512 * 1024; // 512kb
bool StreamChunker::s_isChunkingFile = false; bool StreamChunker::s_isChunkingFile = false;
@ -70,8 +69,8 @@ StreamChunker::sendFile(
// send chunk messages with a fixed chunk size // send chunk messages with a fixed chunk size
size_t sentLength = 0; size_t sentLength = 0;
size_t chunkSize = CHUNK_SIZE; size_t chunkSize = CHUNK_SIZE;
Stopwatch sendStopwatch; Stopwatch fakeHeartbeatStopwatch;
sendStopwatch.start(); fakeHeartbeatStopwatch.start();
file.seekg (0, std::ios::beg); file.seekg (0, std::ios::beg);
while (true) { while (true) {
@ -81,8 +80,10 @@ StreamChunker::sendFile(
break; break;
} }
if (sendStopwatch.getTime() > SEND_THRESHOLD) { if (fakeHeartbeatStopwatch.getTime() > FAKE_HEARTBEAT_THRESHOLD) {
events->addEvent(Event(events->forFile().keepAlive(), eventTarget)); events->addEvent(Event(events->forFile().keepAlive(), eventTarget));
fakeHeartbeatStopwatch.reset();
}
// make sure we don't read too much from the mock data. // make sure we don't read too much from the mock data.
if (sentLength + chunkSize > size) { if (sentLength + chunkSize > size) {
@ -103,9 +104,6 @@ StreamChunker::sendFile(
if (sentLength == size) { if (sentLength == size) {
break; break;
} }
sendStopwatch.reset();
}
} }
// send last message // send last message
@ -136,12 +134,14 @@ StreamChunker::sendClipboard(
// send clipboard chunk with a fixed size // send clipboard chunk with a fixed size
size_t sentLength = 0; size_t sentLength = 0;
size_t chunkSize = CHUNK_SIZE; size_t chunkSize = CHUNK_SIZE;
Stopwatch sendStopwatch; Stopwatch fakeHeartbeatStopwatch;
sendStopwatch.start(); fakeHeartbeatStopwatch.start();
while (true) { while (true) {
if (sendStopwatch.getTime() > SEND_THRESHOLD) { if (fakeHeartbeatStopwatch.getTime() > FAKE_HEARTBEAT_THRESHOLD) {
events->addEvent(Event(events->forFile().keepAlive(), eventTarget)); events->addEvent(Event(events->forFile().keepAlive(), eventTarget));
fakeHeartbeatStopwatch.reset();
}
// make sure we don't read too much from the mock data. // make sure we don't read too much from the mock data.
if (sentLength + chunkSize > size) { if (sentLength + chunkSize > size) {
@ -157,9 +157,6 @@ StreamChunker::sendClipboard(
if (sentLength == size) { if (sentLength == size) {
break; break;
} }
sendStopwatch.reset();
}
} }
// send last message // send last message