consumer: gather constructor args into Options struct
refs #5069 Change-Id: I4eeacc2045157dd12728dab589538d6994ffcb5a
This commit is contained in:
+19
-13
@@ -27,30 +27,36 @@ namespace psync {
|
||||
|
||||
NDN_LOG_INIT(psync.Consumer);
|
||||
|
||||
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,
|
||||
ndn::time::milliseconds syncInterestLifetime)
|
||||
Consumer::Consumer(ndn::Face& face, const ndn::Name& syncPrefix, const Options& opts)
|
||||
: m_face(face)
|
||||
, m_scheduler(m_face.getIoContext())
|
||||
, m_syncPrefix(syncPrefix)
|
||||
, m_helloInterestPrefix(ndn::Name(m_syncPrefix).append("hello"))
|
||||
, m_syncInterestPrefix(ndn::Name(m_syncPrefix).append("sync"))
|
||||
, m_syncDataContentType(ndn::tlv::ContentType_Blob)
|
||||
, m_onReceiveHelloData(onReceiveHelloData)
|
||||
, m_onUpdate(onUpdate)
|
||||
, m_bloomFilter(count, false_positive)
|
||||
, m_helloInterestLifetime(helloInterestLifetime)
|
||||
, m_syncInterestLifetime(syncInterestLifetime)
|
||||
, m_onReceiveHelloData(opts.onHelloData)
|
||||
, m_onUpdate(opts.onUpdate)
|
||||
, m_bloomFilter(opts.bfCount, opts.bfFalsePositive)
|
||||
, m_helloInterestLifetime(opts.helloInterestLifetime)
|
||||
, m_syncInterestLifetime(opts.syncInterestLifetime)
|
||||
, m_rng(ndn::random::getRandomNumberEngine())
|
||||
, m_rangeUniformRandom(100, 500)
|
||||
{
|
||||
}
|
||||
|
||||
Consumer::Consumer(const ndn::Name& syncPrefix,
|
||||
ndn::Face& face,
|
||||
const ReceiveHelloCallback& onReceiveHelloData,
|
||||
const UpdateCallback& onUpdate,
|
||||
unsigned int count,
|
||||
double falsePositive,
|
||||
ndn::time::milliseconds helloInterestLifetime,
|
||||
ndn::time::milliseconds syncInterestLifetime)
|
||||
: Consumer(face, syncPrefix,
|
||||
Options{onReceiveHelloData, onUpdate, count, falsePositive, helloInterestLifetime, syncInterestLifetime})
|
||||
{
|
||||
}
|
||||
|
||||
bool
|
||||
Consumer::addSubscription(const ndn::Name& prefix, uint64_t seqNo, bool callSyncDataCb)
|
||||
{
|
||||
|
||||
+28
-11
@@ -56,23 +56,40 @@ class Consumer
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @brief constructor
|
||||
*
|
||||
* @param syncPrefix syncPrefix to send hello/sync interests to producer
|
||||
* @param face application's face
|
||||
* @param onReceiveHelloData call back to give hello data back to application
|
||||
* @param onUpdate call back to give sync data back to application
|
||||
* @param count bloom filter number of expected elements (subscriptions) in bloom filter
|
||||
* @param false_positive bloom filter false positive probability
|
||||
* @param helloInterestLifetime lifetime of hello interest
|
||||
* @param syncInterestLifetime lifetime of sync interest
|
||||
* @brief Constructor options.
|
||||
*/
|
||||
struct Options
|
||||
{
|
||||
/// Callback to give hello data back to application.
|
||||
ReceiveHelloCallback onHelloData = [] (const auto&) {};
|
||||
/// Callback to give sync data back to application.
|
||||
UpdateCallback onUpdate = [] (const auto&) {};
|
||||
/// Number of expected elements (subscriptions) in Bloom filter.
|
||||
unsigned int bfCount = 80;
|
||||
/// Bloom filter false positive probability.
|
||||
double bfFalsePositive = 0.001;
|
||||
/// Lifetime of hello Interest.
|
||||
ndn::time::milliseconds helloInterestLifetime = HELLO_INTEREST_LIFETIME;
|
||||
/// Lifetime of sync Interest.
|
||||
ndn::time::milliseconds syncInterestLifetime = SYNC_INTEREST_LIFETIME;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Constructor.
|
||||
*
|
||||
* @param face Application face.
|
||||
* @param syncPrefix Prefix to send hello and sync Interests to producer.
|
||||
* @param opts Options.
|
||||
*/
|
||||
Consumer(ndn::Face& face, const ndn::Name& syncPrefix, const Options& opts);
|
||||
|
||||
[[deprecated]]
|
||||
Consumer(const ndn::Name& syncPrefix,
|
||||
ndn::Face& face,
|
||||
const ReceiveHelloCallback& onReceiveHelloData,
|
||||
const UpdateCallback& onUpdate,
|
||||
unsigned int count,
|
||||
double false_positive,
|
||||
double falsePositive = 0.001,
|
||||
ndn::time::milliseconds helloInterestLifetime = HELLO_INTEREST_LIFETIME,
|
||||
ndn::time::milliseconds syncInterestLifetime = SYNC_INTEREST_LIFETIME);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
||||
/*
|
||||
* Copyright (c) 2014-2022, The University of Memphis
|
||||
* Copyright (c) 2014-2023, The University of Memphis
|
||||
*
|
||||
* This file is part of PSync.
|
||||
* See AUTHORS.md for complete list of PSync authors and contributors.
|
||||
@@ -32,18 +32,18 @@ class PSyncConsumer
|
||||
public:
|
||||
/**
|
||||
* @brief Initialize consumer and start hello process
|
||||
*
|
||||
* 0.001 is the false positive probability of the bloom filter
|
||||
*
|
||||
* @param syncPrefix should be the same as producer
|
||||
* @param nSub number of subscriptions is used for the bloom filter (subscription list) size
|
||||
*/
|
||||
PSyncConsumer(const ndn::Name& syncPrefix, int nSub)
|
||||
: m_nSub(nSub)
|
||||
, m_consumer(syncPrefix, m_face,
|
||||
std::bind(&PSyncConsumer::afterReceiveHelloData, this, _1),
|
||||
std::bind(&PSyncConsumer::processSyncUpdate, this, _1),
|
||||
m_nSub, 0.001)
|
||||
, m_consumer(m_face, syncPrefix, [this] {
|
||||
psync::Consumer::Options opts;
|
||||
opts.onHelloData = std::bind(&PSyncConsumer::afterReceiveHelloData, this, _1);
|
||||
opts.onUpdate = std::bind(&PSyncConsumer::processSyncUpdate, this, _1);
|
||||
opts.bfCount = m_nSub;
|
||||
return opts;
|
||||
} ())
|
||||
{
|
||||
// This starts the consumer side by sending a hello interest to the producer
|
||||
// When the producer responds with hello data, afterReceiveHelloData is called
|
||||
|
||||
+11
-12
@@ -33,10 +33,9 @@ BOOST_AUTO_TEST_SUITE(TestConsumer)
|
||||
BOOST_AUTO_TEST_CASE(AddSubscription)
|
||||
{
|
||||
ndn::DummyClientFace face;
|
||||
Consumer consumer(Name("/psync"), face,
|
||||
[] (const auto&) {},
|
||||
[] (const auto&) {},
|
||||
40, 0.001);
|
||||
Consumer::Options opts;
|
||||
opts.bfCount = 40;
|
||||
Consumer consumer(face, "/psync", opts);
|
||||
|
||||
Name subscription("test");
|
||||
|
||||
@@ -48,10 +47,9 @@ BOOST_AUTO_TEST_CASE(AddSubscription)
|
||||
BOOST_AUTO_TEST_CASE(RemoveSubscription)
|
||||
{
|
||||
ndn::DummyClientFace face;
|
||||
Consumer consumer(Name("/psync"), face,
|
||||
[] (const auto&) {},
|
||||
[] (const auto&) {},
|
||||
40, 0.001);
|
||||
Consumer::Options opts;
|
||||
opts.bfCount = 40;
|
||||
Consumer consumer(face, "/psync", opts);
|
||||
|
||||
Name subscription("test");
|
||||
consumer.addSubscription(subscription, 0);
|
||||
@@ -65,10 +63,11 @@ BOOST_AUTO_TEST_CASE(RemoveSubscription)
|
||||
BOOST_FIXTURE_TEST_CASE(ConstantTimeoutForFirstSegment, tests::IoFixture)
|
||||
{
|
||||
ndn::DummyClientFace face(m_io);
|
||||
Consumer consumer(Name("/psync"), face,
|
||||
[] (const auto&) {},
|
||||
[] (const auto&) {},
|
||||
40, 0.001, 4_s, 4_s);
|
||||
Consumer::Options opts;
|
||||
opts.bfCount = 40;
|
||||
opts.helloInterestLifetime = 4_s;
|
||||
opts.syncInterestLifetime = 4_s;
|
||||
Consumer consumer(face, "/psync", opts);
|
||||
|
||||
consumer.sendHelloInterest();
|
||||
advanceClocks(4_s);
|
||||
|
||||
Reference in New Issue
Block a user