blob: dbf9b68c20cdebdeb396d038a815f6482474c53f [file] [log] [blame]
#include <ndn-cpp-dev/face.hpp>
#include "waiting-list.hpp"
namespace nlsr {
static bool
waitingListCompare(const WaitingListEntry& w1, const std::string& respCert)
{
return w1.getResponsibleCert() == respCert;
}
std::pair<WaitingListEntry, bool>
WaitingList::getWaitingListEntry(std::string respCert)
{
std::list<WaitingListEntry>::iterator it = std::find_if(m_waitingTable.begin(),
m_waitingTable.end(), ndn::bind(&waitingListCompare, _1, respCert));
if (it != m_waitingTable.end())
{
return std::make_pair(*(it), true);
}
WaitingListEntry wle;
return std::make_pair(wle, false);
}
bool
WaitingList::add(std::string respCert, std::string waitee)
{
std::list<WaitingListEntry>::iterator it = std::find_if(m_waitingTable.begin(),
m_waitingTable.end(), ndn::bind(&waitingListCompare, _1, respCert));
if (it == m_waitingTable.end())
{
WaitingListEntry newWle(respCert);
newWle.addWaitee(waitee);
m_waitingTable.push_back(newWle);
return true;
}
else
{
return it->addWaitee(waitee);
}
return false;
}
bool
WaitingList::remove(std::string respCert)
{
std::list<WaitingListEntry>::iterator it = std::find_if(m_waitingTable.begin(),
m_waitingTable.end(), ndn::bind(&waitingListCompare, _1, respCert));
if (it == m_waitingTable.end())
{
return false;
}
else
{
m_waitingTable.erase(it);
return true;
}
return false;
}
std::ostream&
operator<<(std::ostream& os, WaitingList wl)
{
os << "-------Waiting List--------" << std::endl;
std::list<WaitingListEntry> wles = wl.getWaitingTable();
for (std::list<WaitingListEntry> ::iterator it = wles.begin();
it != wles.end(); ++it)
{
os << *(it) << std::endl;
}
return os;
}
}//namespace nlsr