blob: 3196817f27b7cc492a447bf9029d244aaa9ebb5c [file] [log] [blame]
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
* Copyright (C) 2014 Named Data Networking Project
* See COPYING for copyright and distribution information.
*/
#ifndef NRD_RIB_HPP
#define NRD_RIB_HPP
#include "common.hpp"
namespace ndn {
namespace nrd {
/** \brief represents the RIB
*/
class Rib
{
public:
typedef std::list<PrefixRegOptions> RibTable;
typedef RibTable::const_iterator const_iterator;
Rib();
~Rib();
const_iterator
find(const PrefixRegOptions& options) const;
void
insert(const PrefixRegOptions& options);
void
erase(const PrefixRegOptions& options);
void
erase(uint64_t faceId);
const_iterator
begin() const;
const_iterator
end() const;
size_t
size() const;
size_t
empty() const;
private:
// Note: Taking a list right now. A Trie will be used later to store
// prefixes
RibTable m_rib;
};
inline Rib::const_iterator
Rib::begin() const
{
return m_rib.begin();
}
inline Rib::const_iterator
Rib::end() const
{
return m_rib.end();
}
inline size_t
Rib::size() const
{
return m_rib.size();
}
inline size_t
Rib::empty() const
{
return m_rib.empty();
}
} // namespace nrd
} // namespace ndn
#endif // NRD_RIB_HPP