Consumer logic to subscribe to producer's data. More...
#include <PSync/consumer.hpp>
Public Member Functions | |
Consumer (const ndn::Name &syncPrefix, ndn::Face &face, const ReceiveHelloCallback &onReceiveHelloData, const UpdateCallback &onUpdate, unsigned int count, double false_positive, ndn::time::milliseconds helloInterestLifetime=HELLO_INTEREST_LIFETIME, ndn::time::milliseconds syncInterestLifetime=SYNC_INTEREST_LIFETIME) | |
constructor More... | |
bool | addSubscription (const ndn::Name &prefix, uint64_t seqNo, bool callSyncDataCb=true) |
Add prefix to subscription list. More... | |
std::optional< uint64_t > | getSeqNo (const ndn::Name &prefix) const |
std::set< ndn::Name > | getSubscriptionList () const |
bool | isSubscribed (const ndn::Name &prefix) const |
bool | removeSubscription (const ndn::Name &prefix) |
Remove prefix from subscription list. More... | |
void | sendHelloInterest () |
send hello interest /<sync-prefix>/hello/ More... | |
void | sendSyncInterest () |
send sync interest /<sync-prefix>/sync/<BF>/<producers-IBF> More... | |
void | stop () |
Stop segment fetcher to stop the sync and free resources. More... | |
Consumer logic to subscribe to producer's data.
Application needs to call sendHelloInterest to get the subscription list in psync::ReceiveHelloCallback. It can then add the desired names using addSubscription. Finally application will call sendSyncInterest. If the application adds something later to the subscription list then it may call sendSyncInterest again for sending the next sync interest with updated IBF immediately to reduce any delay in sync data. Whenever there is new data UpdateCallback will be called to notify the application.
If consumer wakes up after a long time to sync, producer may not decode the differences with its old IBF successfully and send an application nack. Upon receiving the nack, consumer will send a hello again and inform the application via psync::ReceiveHelloCallback and psync::UpdateCallback.
Currently, fetching of the data needs to be handled by the application.
Definition at line 55 of file consumer.hpp.
psync::Consumer::Consumer | ( | const ndn::Name & | syncPrefix, |
ndn::Face & | face, | ||
const ReceiveHelloCallback & | onReceiveHelloData, | ||
const UpdateCallback & | onUpdate, | ||
unsigned int | count, | ||
double | false_positive = 0.001 , |
||
ndn::time::milliseconds | helloInterestLifetime = HELLO_INTEREST_LIFETIME , |
||
ndn::time::milliseconds | syncInterestLifetime = SYNC_INTEREST_LIFETIME |
||
) |
constructor
syncPrefix | syncPrefix to send hello/sync interests to producer |
face | application's face |
onReceiveHelloData | call back to give hello data back to application |
onUpdate | call back to give sync data back to application |
count | bloom filter number of expected elements (subscriptions) in bloom filter |
false_positive | bloom filter false positive probability |
helloInterestLifetime | lifetime of hello interest |
syncInterestLifetime | lifetime of sync interest |
Definition at line 30 of file consumer.cpp.
bool psync::Consumer::addSubscription | ( | const ndn::Name & | prefix, |
uint64_t | seqNo, | ||
bool | callSyncDataCb = true |
||
) |
Add prefix to subscription list.
prefix | prefix to be added to the list |
seqNo | the latest sequence number for the prefix received in HelloData callback |
callSyncDataCb | true by default to let app know that a new sequence number is available. Usually sequence number is zero in hello data, but when it is not Consumer can notify the app. Since the app is aware of the latest sequence number by ReceiveHelloCallback, app may choose to not let Consumer call UpdateCallback by setting this to false. |
Definition at line 55 of file consumer.cpp.
|
inline |
Definition at line 132 of file consumer.hpp.
|
inline |
Definition at line 120 of file consumer.hpp.
|
inline |
Definition at line 126 of file consumer.hpp.
bool psync::Consumer::removeSubscription | ( | const ndn::Name & | prefix | ) |
Remove prefix from subscription list.
prefix | prefix to be removed from the list |
Definition at line 75 of file consumer.cpp.
void psync::Consumer::sendHelloInterest | ( | ) |
send hello interest /<sync-prefix>/hello/
Should be called by the application whenever it wants to send a hello
Definition at line 112 of file consumer.cpp.
void psync::Consumer::sendSyncInterest | ( | ) |
send sync interest /<sync-prefix>/sync/<BF>/<producers-IBF>
Should be called after subscription list is set or updated
Definition at line 186 of file consumer.cpp.
void psync::Consumer::stop | ( | ) |
Stop segment fetcher to stop the sync and free resources.
Definition at line 95 of file consumer.cpp.