Merge pull request #5859
9519a9a
Add correct bool combiner for net signals (Pieter Wuille)
This commit is contained in:
commit
dd4ffcec0e
2 changed files with 34 additions and 2 deletions
19
src/net.h
19
src/net.h
|
@ -78,12 +78,27 @@ void SocketSendData(CNode *pnode);
|
||||||
|
|
||||||
typedef int NodeId;
|
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
|
// Signals for message handling
|
||||||
struct CNodeSignals
|
struct CNodeSignals
|
||||||
{
|
{
|
||||||
boost::signals2::signal<int ()> GetHeight;
|
boost::signals2::signal<int ()> GetHeight;
|
||||||
boost::signals2::signal<bool (CNode*)> ProcessMessages;
|
boost::signals2::signal<bool (CNode*), CombinerAll> ProcessMessages;
|
||||||
boost::signals2::signal<bool (CNode*, bool)> SendMessages;
|
boost::signals2::signal<bool (CNode*, bool), CombinerAll> SendMessages;
|
||||||
boost::signals2::signal<void (NodeId, const CNode*)> InitializeNode;
|
boost::signals2::signal<void (NodeId, const CNode*)> InitializeNode;
|
||||||
boost::signals2::signal<void (NodeId)> FinalizeNode;
|
boost::signals2::signal<void (NodeId)> FinalizeNode;
|
||||||
};
|
};
|
||||||
|
|
|
@ -23,4 +23,21 @@ BOOST_AUTO_TEST_CASE(subsidy_limit_test)
|
||||||
BOOST_CHECK(nSum == 2099999997690000ULL);
|
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()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
|
|
Loading…
Reference in a new issue