added Message::setPollPriority and MessageMap::addPollMessage

This commit is contained in:
john30
2015-05-25 14:08:29 +02:00
parent e2538caf35
commit 6725cb526f
2 changed files with 32 additions and 5 deletions
+18 -4
View File
@@ -282,6 +282,15 @@ result_t Message::create(vector<string>::iterator& it, const vector<string>::ite
return RESULT_OK;
}
bool Message::setPollPriority(unsigned char priority)
{
if (priority == m_pollPriority || m_isPassive)
return false;
m_pollPriority = priority;
return true;
}
result_t Message::prepareMaster(const unsigned char srcAddress, SymbolString& masterData, istringstream& input, char separator, const unsigned char dstAddress)
{
if (m_isPassive)
@@ -538,10 +547,7 @@ result_t MessageMap::add(Message* message)
m_maxIdLength = idLength;
m_messagesByKey[key] = message;
if (message->getPollPriority() > 0) {
message->m_lastPollTime = m_pollMessages.size();
m_pollMessages.push(message);
}
addPollMessage(message);
return RESULT_OK;
}
@@ -680,6 +686,14 @@ Message* MessageMap::find(SymbolString& master)
return NULL;
}
void MessageMap::addPollMessage(Message* message)
{
if (message != NULL && message->getPollPriority() > 0) {
message->m_lastPollTime = m_pollMessages.size();
m_pollMessages.push(message);
}
}
void MessageMap::clear()
{
// clear poll messages
+14 -1
View File
@@ -156,6 +156,13 @@ public:
*/
unsigned char getPollPriority() const { return m_pollPriority; }
/**
* Set the polling priority.
* @param priority the polling priority, or 0 for no polling at all.
* @return true when the priority was changed, false otherwise.
*/
bool setPollPriority(unsigned char priority);
/**
* Prepare the master @a SymbolString for sending a query or command to the bus.
* @param srcAddress the source address to set.
@@ -290,7 +297,7 @@ private:
const bool m_deleteData;
/** the priority for polling, or 0 for no polling at all. */
const unsigned char m_pollPriority;
unsigned char m_pollPriority;
/** the last seen master data. */
SymbolString m_lastMasterData;
@@ -390,6 +397,12 @@ public:
*/
Message* find(SymbolString& master);
/**
* Add a @a Message to the list of instances to poll.
* @param message the @a Message to poll.
*/
void addPollMessage(Message* message);
/**
* Removes all @a Message instances.
*/