psync::detail::IBLT Class Reference

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

#include <PSync/detail/iblt.hpp>

+ Inheritance diagram for psync::detail::IBLT:
+ Collaboration diagram for psync::detail::IBLT:

Classes

class  Error
 

Public Member Functions

 IBLT (size_t expectedNumEntries, CompressionScheme scheme)
 constructor More...
 
void appendToName (ndn::Name &name) const
 Appends self to name. More...
 
void erase (uint32_t key)
 
const std::vector< HashTableEntry > & getHashTable () const
 
void initialize (const ndn::name::Component &ibltName)
 Populate the hash table using the vector representation of IBLT. More...
 
void insert (uint32_t key)
 

Friends

bool operator== (const IBLT &lhs, const IBLT &rhs)
 

Detailed Description

Invertible Bloom Lookup Table (Invertible Bloom Filter)

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

Definition at line 94 of file iblt.hpp.

Constructor & Destructor Documentation

◆ IBLT()

psync::detail::IBLT::IBLT ( size_t  expectedNumEntries,
CompressionScheme  scheme 
)
explicit

constructor

Parameters
expectedNumEntriesthe expected number of entries in the IBLT
schemecompression scheme to be used for the IBLT

Definition at line 75 of file iblt.cpp.

Member Function Documentation

◆ appendToName()

void psync::detail::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.

Definition at line 138 of file iblt.cpp.

◆ erase()

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

Definition at line 132 of file iblt.cpp.

◆ getHashTable()

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

Definition at line 128 of file iblt.hpp.

◆ initialize()

void psync::detail::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 90 of file iblt.cpp.

◆ insert()

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

Definition at line 126 of file iblt.cpp.

Friends And Related Function Documentation

◆ operator==

bool operator== ( const IBLT lhs,
const IBLT rhs 
)
friend

Definition at line 151 of file iblt.hpp.