psync::IBLT Class Reference

Invertible Bloom Lookup Table (Invertible Bloom Filter) More...

#include <iblt.hpp>

Classes

class  Error
 

Public Member Functions

 IBLT (size_t expectedNumEntries)
 constructor More...
 
void appendToName (ndn::Name &name) const
 Appends self to name. More...
 
void erase (uint32_t key)
 
std::vector< uint32_t > extractValueFromName (const ndn::name::Component &ibltName) const
 Extracts IBLT from name component. More...
 
std::vector< HashTableEntrygetHashTable () const
 
void initialize (const ndn::name::Component &ibltName)
 Populate the hash table using the vector representation of IBLT. More...
 
void insert (uint32_t key)
 
bool listEntries (std::set< uint32_t > &positive, std::set< uint32_t > &negative) const
 List all the entries in the IBLT. More...
 
IBLT operator- (const IBLT &other) const
 

Detailed Description

Invertible Bloom Lookup Table (Invertible Bloom Filter)

Used by Partial Sync (PartialProducer) and Full Sync (Full Producer)

Definition at line 80 of file iblt.hpp.

Constructor & Destructor Documentation

psync::IBLT::IBLT ( size_t  expectedNumEntries)
explicit

constructor

Parameters
expectedNumEntriesthe expected number of entries in the IBLT

Definition at line 78 of file iblt.cpp.

Member Function Documentation

void psync::IBLT::appendToName ( ndn::Name &  name) const

Appends self to name.

Encodes our hash table from uint32_t vector to uint8_t vector We create a uin8_t vector 12 times the size of uint32_t vector We put the first count in first 4 cells, keySum in next 4, and keyCheck in next 4. Repeat for all the other cells of the hash table. Then we append this uint8_t vector to the name.

Parameters
name

Definition at line 229 of file iblt.cpp.

void psync::IBLT::erase ( uint32_t  key)

Definition at line 132 of file iblt.cpp.

std::vector< uint32_t > psync::IBLT::extractValueFromName ( const ndn::name::Component &  ibltName) const

Extracts IBLT from name component.

Converts the name into a uint8_t vector which is then decoded to a a uint32_t vector.

Parameters
ibltNameIBLT represented as a Name Component
Returns
a uint32_t vector representing the hash table of the IBLT

Definition at line 272 of file iblt.cpp.

std::vector<HashTableEntry> psync::IBLT::getHashTable ( ) const
inline

Definition at line 129 of file iblt.hpp.

void psync::IBLT::initialize ( const ndn::name::Component &  ibltName)

Populate the hash table using the vector representation of IBLT.

Parameters
ibltNamethe Component representation of IBLT
Exceptions
Errorif size of values is not compatible with this IBF

Definition at line 92 of file iblt.cpp.

void psync::IBLT::insert ( uint32_t  key)

Definition at line 126 of file iblt.cpp.

bool psync::IBLT::listEntries ( std::set< uint32_t > &  positive,
std::set< uint32_t > &  negative 
) const

List all the entries in the IBLT.

This is called on a difference of two IBLTs: ownIBLT - rcvdIBLT Entries listed in positive are in ownIBLT but not in rcvdIBLT Entries listed in negative are in rcvdIBLT but not in ownIBLT

Parameters
positive
negative
Returns
true if decoding is complete successfully

Definition at line 138 of file iblt.cpp.

IBLT psync::IBLT::operator- ( const IBLT other) const

Definition at line 171 of file iblt.cpp.