Skip to content

Commit

Permalink
consumer: gather constructor args into Options struct
Browse files Browse the repository at this point in the history
refs #5069

Change-Id: I4eeacc2045157dd12728dab589538d6994ffcb5a
  • Loading branch information
yoursunny committed Nov 26, 2023
1 parent 60e5043 commit 7639daa
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 43 deletions.
32 changes: 19 additions & 13 deletions PSync/consumer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down
37 changes: 27 additions & 10 deletions PSync/consumer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,23 +56,40 @@ class Consumer
{
public:
/**
* @brief constructor
* @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 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
* @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);

Expand Down
16 changes: 8 additions & 8 deletions examples/consumer.cpp
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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
Expand Down
23 changes: 11 additions & 12 deletions tests/test-consumer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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");

Expand All @@ -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);
Expand All @@ -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);
Expand Down

0 comments on commit 7639daa

Please sign in to comment.