Add correct bool combiner for net signals
This commit is contained in:
parent
84a05b843b
commit
9519a9a420
19
src/net.h
19
src/net.h
@ -76,12 +76,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;
|
||||
};
|
||||
|
@ -21,4 +21,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…
Reference in New Issue
Block a user