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...
|
|
Base class for PartialProducer and FullProducer.
Contains code common to both
Definition at line 51 of file producer-base.hpp.
psync::ProducerBase::ProducerBase |
( |
size_t |
expectedNumEntries, |
|
|
ndn::Face & |
face, |
|
|
const ndn::Name & |
syncPrefix, |
|
|
const ndn::Name & |
userPrefix, |
|
|
ndn::time::milliseconds |
syncReplyFreshness = SYNC_REPLY_FRESHNESS , |
|
|
ndn::time::milliseconds |
helloReplyFreshness = HELLO_REPLY_FRESHNESS |
|
) |
| |
|
protected |
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 |
helloReplyFreshness | freshness of hello data |
Definition at line 33 of file producer-base.cpp.
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 55 of file producer-base.cpp.
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 83 of file producer-base.hpp.
bool psync::ProducerBase::isUserNode |
( |
const ndn::Name & |
prefix | ) |
|
|
inlineprotected |
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 144 of file producer-base.cpp.
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 67 of file producer-base.cpp.
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 128 of file producer-base.cpp.
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_prefix, m_prefix2hash, m_hash2prefix, and IBF
- Parameters
-
prefix | prefix of the update |
seq | sequence number of the update |
Definition at line 86 of file producer-base.cpp.
uint32_t psync::ProducerBase::m_expectedNumEntries |
|
protected |
ndn::Face& psync::ProducerBase::m_face |
|
protected |
std::map<uint32_t, ndn::Name> psync::ProducerBase::m_hash2prefix |
|
protected |
ndn::time::milliseconds psync::ProducerBase::m_helloReplyFreshness |
|
protected |
IBLT psync::ProducerBase::m_iblt |
|
protected |
ndn::KeyChain psync::ProducerBase::m_keyChain |
|
protected |
std::map<ndn::Name, uint32_t> psync::ProducerBase::m_prefix2hash |
|
protected |
std::map<ndn::Name, uint64_t> psync::ProducerBase::m_prefixes |
|
protected |
ndn::random::RandomNumberEngine& psync::ProducerBase::m_rng |
|
protected |
ndn::Scheduler psync::ProducerBase::m_scheduler |
|
protected |
ndn::Name psync::ProducerBase::m_syncPrefix |
|
protected |
ndn::time::milliseconds psync::ProducerBase::m_syncReplyFreshness |
|
protected |
uint32_t psync::ProducerBase::m_threshold |
|
protected |
ndn::Name psync::ProducerBase::m_userPrefix |
|
protected |