Fix initial message queueing by introducing a sleeping timer

This commit is contained in:
Alexander Bock
2015-05-13 00:17:46 +02:00
parent b5846cc69b
commit a96a34575c
2 changed files with 7 additions and 3 deletions
+1 -1
View File
@@ -65,7 +65,7 @@ private:
std::vector<Message> _initialConnectionMessages;
bool _shouldPublishStatusMessage;
MessageIdentifier _statusMessageIdentifier;
MessageIdentifier _identifierMappingIdentifier;
+6 -2
View File
@@ -47,6 +47,7 @@ namespace openspace {
NetworkEngine::NetworkEngine()
: _lastAssignedIdentifier(-1) // -1 is okay as we assign one identifier in this ctor
, _shouldPublishStatusMessage(true)
{
static_assert(
sizeof(MessageIdentifier) == 2,
@@ -80,7 +81,7 @@ bool NetworkEngine::handleMessage(const std::string& message) {
}
void NetworkEngine::publishStatusMessage() {
if (!sgct::Engine::instance()->isExternalControlConnected())
if (!_shouldPublishStatusMessage || !sgct::Engine::instance()->isExternalControlConnected())
return;
// Protocol:
// 8 bytes: time as a ET double
@@ -183,7 +184,8 @@ void NetworkEngine::sendMessages() {
}
void NetworkEngine::sendInitialInformation() {
static const int SleepTime = 25;
static const int SleepTime = 100;
_shouldPublishStatusMessage = false;
for (const Message& m : _initialConnectionMessages) {
union {
MessageIdentifier value;
@@ -197,9 +199,11 @@ void NetworkEngine::sendInitialInformation() {
payload.data(),
static_cast<int>(payload.size())
);
std::this_thread::sleep_for(std::chrono::milliseconds(SleepTime));
}
_shouldPublishStatusMessage = true;
}
void NetworkEngine::setInitialConnectionMessage(MessageIdentifier identifier, std::vector<char> message) {