Base class for PartialProducer and FullProducer.
More...
#include <producer-base.hpp>
|
bool | addUserNode (const ndn::Name &prefix) |
| Adds a user node for synchronization. More...
|
|
ndn::optional< uint64_t > | getSeqNo (const ndn::Name &prefix) const |
| Returns the current sequence number of the given prefix. More...
|
|
void | removeUserNode (const ndn::Name &prefix) |
| Remove the user node from synchronization. More...
|
|
|
using | HashNameBiMap = bm::bimap< bm::unordered_set_of< uint32_t >, bm::unordered_set_of< ndn::Name, std::hash< ndn::Name > >> |
|
Base class for PartialProducer and FullProducer.
Contains code common to both
Definition at line 53 of file producer-base.hpp.
◆ HashNameBiMap
◆ ProducerBase()
constructor
- Parameters
-
expectedNumEntries | expected number entries in IBF |
face | application's face |
syncPrefix | The prefix of the sync group |
userPrefix | The prefix of the first user in the group |
syncReplyFreshness | freshness of sync data |
ibltCompression | Compression scheme to use for IBF |
contentCompression | Compression scheme to use for Data content |
Definition at line 33 of file producer-base.cpp.
◆ addUserNode()
bool psync::ProducerBase::addUserNode |
( |
const ndn::Name & |
prefix | ) |
|
Adds a user node for synchronization.
Initializes m_prefixes[prefix] to zero Does not add zero-th sequence number to IBF because if a large number of user nodes are added then decoding of the difference between own IBF and other IBF will not be possible
- Parameters
-
prefix | the user node to be added |
Definition at line 57 of file producer-base.cpp.
◆ getSeqNo()
ndn::optional<uint64_t> psync::ProducerBase::getSeqNo |
( |
const ndn::Name & |
prefix | ) |
const |
|
inline |
Returns the current sequence number of the given prefix.
- Parameters
-
prefix | prefix to get the sequence number of |
Definition at line 87 of file producer-base.hpp.
◆ isUserNode()
bool psync::ProducerBase::isUserNode |
( |
const ndn::Name & |
prefix | ) |
const |
|
inlineprotected |
◆ onRegisterFailed()
void psync::ProducerBase::onRegisterFailed |
( |
const ndn::Name & |
prefix, |
|
|
const std::string & |
msg |
|
) |
| const |
|
protected |
Logs a message if setting an interest filter fails.
- Parameters
-
Definition at line 141 of file producer-base.cpp.
◆ removeUserNode()
void psync::ProducerBase::removeUserNode |
( |
const ndn::Name & |
prefix | ) |
|
Remove the user node from synchronization.
Erases prefix from IBF and other maps
- Parameters
-
prefix | the user node to be removed |
Definition at line 69 of file producer-base.cpp.
◆ sendApplicationNack()
void psync::ProducerBase::sendApplicationNack |
( |
const ndn::Name & |
name | ) |
|
|
protected |
Sends a data packet with content type nack.
Producer sends a nack to consumer if consumer has very old IBF whose differences with latest IBF can't be decoded successfully
- Parameters
-
name | send application nack with this name |
Definition at line 125 of file producer-base.cpp.
◆ updateSeqNo()
void psync::ProducerBase::updateSeqNo |
( |
const ndn::Name & |
prefix, |
|
|
uint64_t |
seq |
|
) |
| |
|
protected |
Update m_prefixes and IBF with the given prefix and seq.
Whoever calls this needs to make sure that prefix is in m_prefixes We remove already existing prefix/seq from IBF (unless seq is zero because we don't insert zero seq into IBF) Then we update m_prefixes, m_biMap, and IBF
- Parameters
-
prefix | prefix of the update |
seq | sequence number of the update |
Definition at line 86 of file producer-base.cpp.
◆ m_biMap
◆ m_contentCompression
◆ m_expectedNumEntries
uint32_t psync::ProducerBase::m_expectedNumEntries |
|
protected |
◆ m_face
ndn::Face& psync::ProducerBase::m_face |
|
protected |
◆ m_iblt
IBLT psync::ProducerBase::m_iblt |
|
protected |
◆ m_ibltCompression
◆ m_keyChain
ndn::KeyChain psync::ProducerBase::m_keyChain |
|
protected |
◆ m_prefixes
std::map<ndn::Name, uint64_t> psync::ProducerBase::m_prefixes |
|
protected |
◆ m_rng
ndn::random::RandomNumberEngine& psync::ProducerBase::m_rng |
|
protected |
◆ m_scheduler
ndn::Scheduler psync::ProducerBase::m_scheduler |
|
protected |
◆ m_segmentPublisher
◆ m_syncPrefix
ndn::Name psync::ProducerBase::m_syncPrefix |
|
protected |
◆ m_syncReplyFreshness
ndn::time::milliseconds psync::ProducerBase::m_syncReplyFreshness |
|
protected |
◆ m_threshold
uint32_t psync::ProducerBase::m_threshold |
|
protected |
◆ m_userPrefix
ndn::Name psync::ProducerBase::m_userPrefix |
|
protected |