NetworkCompatibilityChecker: num_failed_nodes moved to NetworkCompatibilityCheckResult

This commit is contained in:
Pavel Kirienko
2014-06-15 22:27:16 +04:00
parent 163c3e0791
commit 0c1ecc0caa
3 changed files with 9 additions and 7 deletions
@@ -17,6 +17,12 @@ namespace uavcan
struct UAVCAN_EXPORT NetworkCompatibilityCheckResult struct UAVCAN_EXPORT NetworkCompatibilityCheckResult
{ {
NodeID conflicting_node; NodeID conflicting_node;
uint8_t num_failed_nodes;
NetworkCompatibilityCheckResult()
: num_failed_nodes(0)
{ }
bool isOk() const { return !conflicting_node.isValid(); } bool isOk() const { return !conflicting_node.isValid(); }
}; };
@@ -40,7 +46,6 @@ class UAVCAN_EXPORT NetworkCompatibilityChecker : Noncopyable
NodeIDMask nid_mask_checked_; NodeIDMask nid_mask_checked_;
NetworkCompatibilityCheckResult result_; NetworkCompatibilityCheckResult result_;
DataTypeKind checking_dtkind_; DataTypeKind checking_dtkind_;
uint8_t num_failed_nodes_;
bool last_cats_request_ok_; bool last_cats_request_ok_;
INode& getNode() { return ns_sub_.getNode(); } INode& getNode() { return ns_sub_.getNode(); }
@@ -64,14 +69,11 @@ public:
: ns_sub_(node) : ns_sub_(node)
, cats_cln_(node) , cats_cln_(node)
, checking_dtkind_(DataTypeKindService) , checking_dtkind_(DataTypeKindService)
, num_failed_nodes_(0)
, last_cats_request_ok_(false) , last_cats_request_ok_(false)
{ } { }
int execute(); int execute();
uint8_t getNumFailedNodes() const { return num_failed_nodes_; }
const NetworkCompatibilityCheckResult& getResult() const { return result_; } const NetworkCompatibilityCheckResult& getResult() const { return result_; }
static int publishGlobalDiscoveryRequest(INode& node); static int publishGlobalDiscoveryRequest(INode& node);
@@ -132,7 +132,6 @@ int NetworkCompatibilityChecker::checkOneNode(NodeID nid)
int NetworkCompatibilityChecker::checkNodes() int NetworkCompatibilityChecker::checkNodes()
{ {
(void)nid_mask_checked_.reset(); (void)nid_mask_checked_.reset();
num_failed_nodes_ = 0;
result_ = NetworkCompatibilityCheckResult(); result_ = NetworkCompatibilityCheckResult();
while (result_.isOk()) while (result_.isOk())
@@ -142,7 +141,7 @@ int NetworkCompatibilityChecker::checkNodes()
{ {
UAVCAN_TRACE("NodeInitializer", "Checking nid=%i", int(nid.get())); UAVCAN_TRACE("NodeInitializer", "Checking nid=%i", int(nid.get()));
const int res = checkOneNode(nid); const int res = checkOneNode(nid);
num_failed_nodes_ += (res < 0) ? 1U : 0U; result_.num_failed_nodes += (res < 0) ? 1U : 0U;
UAVCAN_TRACE("NodeInitializer", "Checked nid=%i result=%i", int(nid.get()), res); UAVCAN_TRACE("NodeInitializer", "Checked nid=%i result=%i", int(nid.get()), res);
} }
else { break; } else { break; }
@@ -100,7 +100,8 @@ TEST(NetworkCompatibilityChecker, RequestTimeout)
ASSERT_EQ(0, ni.execute()); ASSERT_EQ(0, ni.execute());
// The one (and only) node has failed // The one (and only) node has failed
ASSERT_EQ(1, ni.getNumFailedNodes()); ASSERT_EQ(1, ni.getResult().num_failed_nodes);
ASSERT_TRUE(ni.getResult().isOk());
} }