Class for bookkeeping sent SEARCH-Messages to gather statistical data. More...
#include <SearchMsgBookkeeping.h>
Classes | |
struct | SearchMessageItem |
structure containing all necessary values to gather statistical data More... | |
Public Types | |
typedef std::map< OverlayKey, SearchMessageItem > | SearchBookkeepingList |
typedef for hashmap of OverlayKey and SearchMessageItem | |
typedef std::map< OverlayKey, SearchMessageItem >::iterator | SearchBookkeepingListIterator |
typedef for an iterator of SearchBookkeepingList | |
typedef std::map< OverlayKey, SearchMessageItem > ::const_iterator | SearchBookkeepingListConstIterator |
typedef for an constant iterator of SearchBookkeepingList | |
Public Member Functions | |
~SearchMsgBookkeeping () | |
Destructor. | |
uint32_t | getSize () const |
Returns size of Search-Message-Bookkeeping-List. | |
void | addMessage (const OverlayKey &searchKey) |
Add SearchMessage to SearchMsgBookkeeping. | |
void | removeMessage (const OverlayKey &searchKey) |
Removes SearchMessage from SearchMsgBookkeeping. | |
bool | contains (const OverlayKey &searchKey) const |
checks if Search-Message-Bookkeeping-List contains a specified key | |
void | updateItem (const OverlayKey &searchKey, uint32_t hopCount) |
Updates hop-count, min-response-delay, max-response-delay of given searchMessage. | |
GiaSearchStats | getStatisticalData () const |
Returns statistical data. | |
Protected Attributes | |
SearchBookkeepingList | messages |
bookkeeping list of all sent search messages |
Class for bookkeeping sent SEARCH-Messages to gather statistical data.
Definition at line 53 of file SearchMsgBookkeeping.h.
typedef std::map<OverlayKey, SearchMessageItem> SearchMsgBookkeeping::SearchBookkeepingList |
typedef for hashmap of OverlayKey and SearchMessageItem
Definition at line 72 of file SearchMsgBookkeeping.h.
typedef std::map<OverlayKey, SearchMessageItem>::const_iterator SearchMsgBookkeeping::SearchBookkeepingListConstIterator |
typedef for an constant iterator of SearchBookkeepingList
Definition at line 76 of file SearchMsgBookkeeping.h.
typedef std::map<OverlayKey, SearchMessageItem>::iterator SearchMsgBookkeeping::SearchBookkeepingListIterator |
typedef for an iterator of SearchBookkeepingList
Definition at line 74 of file SearchMsgBookkeeping.h.
SearchMsgBookkeeping::~SearchMsgBookkeeping | ( | ) |
void SearchMsgBookkeeping::addMessage | ( | const OverlayKey & | searchKey | ) |
Add SearchMessage to SearchMsgBookkeeping.
searchKey |
Definition at line 37 of file SearchMsgBookkeeping.cc.
Referenced by GIASearchApp::handleTimerEvent().
{ SearchMessageItem item; item.searchKey = searchKey; item.creationTime = simTime(); item.minDelay = 0; item.maxDelay = 0; item.minHopCount = 0; item.maxHopCount = 0; item.responseCount = 0; messages[searchKey] = item; }
bool SearchMsgBookkeeping::contains | ( | const OverlayKey & | searchKey | ) | const |
checks if Search-Message-Bookkeeping-List contains a specified key
searchKey | Key to check |
Definition at line 58 of file SearchMsgBookkeeping.cc.
Referenced by GIASearchApp::handleLowerMessage(), and GIASearchApp::handleTimerEvent().
{ SearchBookkeepingListConstIterator it = messages.find(searchKey); return (it != messages.end()); }
uint32_t SearchMsgBookkeeping::getSize | ( | ) | const |
Returns size of Search-Message-Bookkeeping-List.
Definition at line 32 of file SearchMsgBookkeeping.cc.
{ return messages.size(); }
GiaSearchStats SearchMsgBookkeeping::getStatisticalData | ( | ) | const |
Returns statistical data.
Definition at line 99 of file SearchMsgBookkeeping.cc.
Referenced by GIASearchApp::finishApp().
{ SearchMessageItem currentItem; GiaSearchStats temp = {0, 0, 0, 0, 0}; uint32_t size = messages.size(); if (size == 0) return temp; for(SearchBookkeepingListConstIterator it = messages.begin(); it != messages.end(); it++) { currentItem = it->second; temp.minDelay += (float)SIMTIME_DBL(currentItem.minDelay); temp.maxDelay += (float)SIMTIME_DBL(currentItem.maxDelay); temp.minHopCount += currentItem.minHopCount; temp.maxHopCount += currentItem.maxHopCount; temp.responseCount += currentItem.responseCount; } temp.minDelay /= size; temp.maxDelay /= size; temp.minHopCount /= size; temp.maxHopCount /= size; temp.responseCount /= size; return temp; }
void SearchMsgBookkeeping::removeMessage | ( | const OverlayKey & | searchKey | ) |
Removes SearchMessage from SearchMsgBookkeeping.
searchKey |
Definition at line 50 of file SearchMsgBookkeeping.cc.
{ SearchBookkeepingListIterator it = messages.find(searchKey); if(it->first == searchKey) messages.erase(it); }
void SearchMsgBookkeeping::updateItem | ( | const OverlayKey & | searchKey, | |
uint32_t | hopCount | |||
) |
Updates hop-count, min-response-delay, max-response-delay of given searchMessage.
searchKey | Id of search message | |
hopCount | New hopCount-Value |
Definition at line 64 of file SearchMsgBookkeeping.cc.
Referenced by GIASearchApp::handleLowerMessage().
{ SearchBookkeepingListIterator it = messages.find(searchKey); SearchMessageItem currentItem; if(it->first == searchKey) { currentItem = it->second; simtime_t currentTime = simTime(); simtime_t delay = currentTime - currentItem.creationTime; // initialize first minDelay if (currentItem.minDelay == 0) currentItem.minDelay = delay; // initialize first minHopCount if (currentItem.minHopCount == 0) currentItem.minHopCount = hopCount; if (delay < currentItem.minDelay) currentItem.minDelay = delay; if (delay > currentItem.maxDelay) currentItem.maxDelay = delay; if (hopCount < currentItem.minHopCount) currentItem.minHopCount = hopCount; if (hopCount > currentItem.maxHopCount) currentItem.maxHopCount = hopCount; currentItem.responseCount++; it->second = currentItem; } }
SearchBookkeepingList SearchMsgBookkeeping::messages [protected] |
bookkeeping list of all sent search messages
Definition at line 129 of file SearchMsgBookkeeping.h.
Referenced by addMessage(), contains(), getSize(), getStatisticalData(), removeMessage(), and updateItem().