Ref T190, consolidate text messages before emitting text message

This commit is contained in:
Klaus Basan
2017-11-11 23:50:50 +01:00
parent b08e281f85
commit e24914cc26
2 changed files with 31 additions and 2 deletions

View File

@@ -801,8 +801,7 @@ namespace BlackCore
{ {
CTextMessage tm(cbvar_cast(cbvar)->fromFSD(msg), CCallsign(cbvar_cast(cbvar)->fromFSD(from)), CCallsign(cbvar_cast(cbvar)->fromFSD(to))); CTextMessage tm(cbvar_cast(cbvar)->fromFSD(msg), CCallsign(cbvar_cast(cbvar)->fromFSD(from)), CCallsign(cbvar_cast(cbvar)->fromFSD(to)));
tm.setCurrentUtcTime(); tm.setCurrentUtcTime();
const CTextMessageList messages(tm); cbvar_cast(cbvar)->consolidateTextMessage(tm);
emit cbvar_cast(cbvar)->textMessagesReceived(messages);
} }
void CNetworkVatlib::onRadioMessageReceived(VatSessionID, const char *from, int numFreq, int *freqList, const char *msg, void *cbvar) void CNetworkVatlib::onRadioMessageReceived(VatSessionID, const char *from, int numFreq, int *freqList, const char *msg, void *cbvar)
@@ -986,6 +985,25 @@ namespace BlackCore
} }
} }
void CNetworkVatlib::consolidateTextMessage(const CTextMessage &textMessage)
{
if (textMessage.isSupervisorMessage())
{
emit this->textMessagesReceived(textMessage);
}
else
{
m_textMessagesToConsolidate.addConsolidatedTextMessage(textMessage);
m_dsSendTextMessage.inputSignal(); // trigger
}
}
void CNetworkVatlib::emitConsolidatedTextMessages()
{
emit this->textMessagesReceived(m_textMessagesToConsolidate);
m_textMessagesToConsolidate.clear();
}
void CNetworkVatlib::onMetarReceived(VatSessionID, const char *data, void *cbvar) void CNetworkVatlib::onMetarReceived(VatSessionID, const char *data, void *cbvar)
{ {
auto *self = cbvar_cast(cbvar); auto *self = cbvar_cast(cbvar);

View File

@@ -27,6 +27,7 @@
#include "blackmisc/network/server.h" #include "blackmisc/network/server.h"
#include "blackmisc/network/textmessagelist.h" #include "blackmisc/network/textmessagelist.h"
#include "blackmisc/settingscache.h" #include "blackmisc/settingscache.h"
#include "blackmisc/digestsignal.h"
#include <stdbool.h> #include <stdbool.h>
#include <vatlib/vatlib.h> #include <vatlib/vatlib.h>
@@ -199,6 +200,13 @@ namespace BlackCore
void terminate(); //!< \private void terminate(); //!< \private
private: private:
//! Consolidate text messages if we receive multiple messages which belong together
//! \remark causes a slight delay
void consolidateTextMessage(const BlackMisc::Network::CTextMessage &textMessage);
//! Send the consolidatedTextMessages
void emitConsolidatedTextMessages();
//! Deletion policy for QScopedPointer //! Deletion policy for QScopedPointer
struct VatlibQScopedPointerDeleter struct VatlibQScopedPointerDeleter
{ {
@@ -220,6 +228,9 @@ namespace BlackCore
BlackMisc::Aviation::CAircraftParts m_sentAircraftConfig; //!< aircraft parts sent BlackMisc::Aviation::CAircraftParts m_sentAircraftConfig; //!< aircraft parts sent
BlackMisc::CTokenBucket m_tokenBucket; //!< used with aircraft parts messages BlackMisc::CTokenBucket m_tokenBucket; //!< used with aircraft parts messages
BlackMisc::CDigestSignal m_dsSendTextMessage { this, &CNetworkVatlib::emitConsolidatedTextMessages, 500, 10 };
BlackMisc::Network::CTextMessageList m_textMessagesToConsolidate;
QTimer m_scheduledConfigUpdate; QTimer m_scheduledConfigUpdate;
QTimer m_processingTimer; QTimer m_processingTimer;
QTimer m_positionUpdateTimer; QTimer m_positionUpdateTimer;