|
reSIProcate/stack
9694
|
#include <TupleMarkManager.hxx>

Classes | |
| class | ListEntry |
Public Types | |
| enum | MarkType { OK, GREY, BLACK } |
Public Member Functions | |
| TupleMarkManager () | |
| virtual | ~TupleMarkManager () |
| MarkType | getMarkType (const Tuple &tuple) |
| void | mark (const Tuple &tuple, UInt64 expiry, MarkType mark) |
| void | registerMarkListener (MarkListener *) |
| void | unregisterMarkListener (MarkListener *) |
Private Types | |
| typedef std::map< ListEntry, MarkType > | TupleList |
| typedef std::set< MarkListener * > | Listeners |
Private Member Functions | |
| void | notifyListeners (const resip::Tuple &tuple, UInt64 &expiry, MarkType &mark) |
Private Attributes | |
| TupleList | mList |
| resip::Mutex | mListMutex |
| Listeners | mListeners |
Definition at line 14 of file TupleMarkManager.hxx.
typedef std::set<MarkListener*> resip::TupleMarkManager::Listeners [private] |
Definition at line 57 of file TupleMarkManager.hxx.
typedef std::map<ListEntry,MarkType> resip::TupleMarkManager::TupleList [private] |
Definition at line 52 of file TupleMarkManager.hxx.
| resip::TupleMarkManager::TupleMarkManager | ( | ) | [inline] |
Definition at line 17 of file TupleMarkManager.hxx.
{}
| virtual resip::TupleMarkManager::~TupleMarkManager | ( | ) | [inline, virtual] |
Definition at line 18 of file TupleMarkManager.hxx.
{}
| TupleMarkManager::MarkType resip::TupleMarkManager::getMarkType | ( | const Tuple & | tuple | ) |
Definition at line 11 of file TupleMarkManager.cxx.
References resip::Timer::getTimeMs(), mark(), mList, mListMutex, notifyListeners(), and OK.
Referenced by resip::DnsResult::lookupInternal(), and resip::DnsResult::onDnsResult().
{
ListEntry entry(tuple,0);
resip::Lock g(mListMutex);
TupleList::iterator i=mList.find(entry);
if(i!=mList.end())
{
UInt64 now=Timer::getTimeMs();
if(i->first.mExpiry > now)
{
return i->second;
}
else
{
mList.erase(i);
// ?bwc? Should we do this?
UInt64 expiry = 0;
MarkType mark = OK;
notifyListeners(tuple,expiry,mark);
}
}
return OK;
}

Definition at line 37 of file TupleMarkManager.cxx.
References mList, mListMutex, and notifyListeners().
Referenced by resip::DnsResult::blacklistLast(), getMarkType(), and resip::DnsResult::greylistLast().
{
// .amr. Notify listeners first so they can change the entry if they want
notifyListeners(tuple,expiry,mark);
ListEntry entry(tuple,expiry);
resip::Lock g(mListMutex);
mList[entry]=mark;
}

| void resip::TupleMarkManager::notifyListeners | ( | const resip::Tuple & | tuple, |
| UInt64 & | expiry, | ||
| MarkType & | mark | ||
| ) | [private] |
Definition at line 57 of file TupleMarkManager.cxx.
References mListeners.
Referenced by getMarkType(), and mark().
{
for(Listeners::iterator i = mListeners.begin(); i!=mListeners.end(); ++i)
{
(*i)->onMark(tuple,expiry,mark);
}
}
| void resip::TupleMarkManager::registerMarkListener | ( | MarkListener * | listener | ) |
Definition at line 46 of file TupleMarkManager.cxx.
References mListeners.
Referenced by main(), and resip::TransportSelector::registerMarkListener().
{
mListeners.insert(listener);
}
| void resip::TupleMarkManager::unregisterMarkListener | ( | MarkListener * | listener | ) |
Definition at line 51 of file TupleMarkManager.cxx.
References mListeners.
Referenced by main(), and resip::TransportSelector::unregisterMarkListener().
{
mListeners.erase(listener);
}
TupleList resip::TupleMarkManager::mList [private] |
Definition at line 54 of file TupleMarkManager.hxx.
Referenced by getMarkType(), and mark().
Listeners resip::TupleMarkManager::mListeners [private] |
Definition at line 58 of file TupleMarkManager.hxx.
Referenced by notifyListeners(), registerMarkListener(), and unregisterMarkListener().
Definition at line 55 of file TupleMarkManager.hxx.
Referenced by getMarkType(), and mark().
1.7.5.1