Browse Source

Merge pull request #5859

9519a9a Add correct bool combiner for net signals (Pieter Wuille)
0.13
Wladimir J. van der Laan 10 years ago
parent
commit
dd4ffcec0e
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 19
      src/net.h
  2. 17
      src/test/main_tests.cpp

19
src/net.h

@ -78,12 +78,27 @@ void SocketSendData(CNode *pnode); @@ -78,12 +78,27 @@ void SocketSendData(CNode *pnode);
typedef int NodeId;
struct CombinerAll
{
typedef bool result_type;
template<typename I>
bool operator()(I first, I last) const
{
while (first != last) {
if (!(*first)) return false;
++first;
}
return true;
}
};
// Signals for message handling
struct CNodeSignals
{
boost::signals2::signal<int ()> GetHeight;
boost::signals2::signal<bool (CNode*)> ProcessMessages;
boost::signals2::signal<bool (CNode*, bool)> SendMessages;
boost::signals2::signal<bool (CNode*), CombinerAll> ProcessMessages;
boost::signals2::signal<bool (CNode*, bool), CombinerAll> SendMessages;
boost::signals2::signal<void (NodeId, const CNode*)> InitializeNode;
boost::signals2::signal<void (NodeId)> FinalizeNode;
};

17
src/test/main_tests.cpp

@ -23,4 +23,21 @@ BOOST_AUTO_TEST_CASE(subsidy_limit_test) @@ -23,4 +23,21 @@ BOOST_AUTO_TEST_CASE(subsidy_limit_test)
BOOST_CHECK(nSum == 2099999997690000ULL);
}
bool ReturnFalse() { return false; }
bool ReturnTrue() { return true; }
BOOST_AUTO_TEST_CASE(test_combiner_all)
{
boost::signals2::signal<bool (), CombinerAll> Test;
BOOST_CHECK(Test());
Test.connect(&ReturnFalse);
BOOST_CHECK(!Test());
Test.connect(&ReturnTrue);
BOOST_CHECK(!Test());
Test.disconnect(&ReturnFalse);
BOOST_CHECK(Test());
Test.disconnect(&ReturnTrue);
BOOST_CHECK(Test());
}
BOOST_AUTO_TEST_SUITE_END()

Loading…
Cancel
Save