From dd5908dad8e0e6de37d449cdbede80401bae4fc4 Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Sat, 12 Apr 2014 21:40:30 +0400 Subject: [PATCH] Renaming: NodeInitializer --> NetworkCompatibilityChecker --- libuavcan/include/uavcan/node/node.hpp | 14 ++++---- ...ializer.hpp => network_compat_checker.hpp} | 18 +++++----- ...izer.cpp => uc_network_compat_checker.cpp} | 26 +++++++------- libuavcan/test/node/node.cpp | 2 +- ...ializer.cpp => network_compat_checker.cpp} | 34 ++++++++++--------- libuavcan_drivers/linux/test/test_node.cpp | 2 +- .../linux/test/test_node_status_monitor.cpp | 2 +- .../linux/test/test_time_sync.cpp | 2 +- 8 files changed, 51 insertions(+), 49 deletions(-) rename libuavcan/include/uavcan/protocol/{node_initializer.hpp => network_compat_checker.hpp} (74%) rename libuavcan/src/protocol/{uc_node_initializer.cpp => uc_network_compat_checker.cpp} (81%) rename libuavcan/test/protocol/{node_initializer.cpp => network_compat_checker.cpp} (69%) diff --git a/libuavcan/include/uavcan/node/node.hpp b/libuavcan/include/uavcan/node/node.hpp index 635e57954d..6a4ffc32de 100644 --- a/libuavcan/include/uavcan/node/node.hpp +++ b/libuavcan/include/uavcan/node/node.hpp @@ -17,7 +17,7 @@ #include #include #include -#include +#include #if !defined(UAVCAN_CPP_VERSION) || !defined(UAVCAN_CPP11) # error UAVCAN_CPP_VERSION @@ -51,7 +51,7 @@ class UAVCAN_EXPORT Node : public INode bool started_; - int initNetwork(NodeInitializationResult& node_init_result); + int initNetwork(NetworkCompatibilityCheckResult& node_init_result); protected: virtual void registerInternalFailure(const char* msg) @@ -99,7 +99,7 @@ public: bool isStarted() const { return started_; } - int start(NodeInitializationResult& node_init_result); + int start(NetworkCompatibilityCheckResult& node_init_result); /* * Initialization methods @@ -174,14 +174,14 @@ public: template int Node:: -initNetwork(NodeInitializationResult& node_init_result) +initNetwork(NetworkCompatibilityCheckResult& node_init_result) { - int res = NodeInitializer::publishGlobalDiscoveryRequest(*this); + int res = NetworkCompatibilityChecker::publishGlobalDiscoveryRequest(*this); if (res < 0) { return res; } - NodeInitializer initializer(*this); + NetworkCompatibilityChecker initializer(*this); StaticAssert<(sizeof(initializer) < 1200)>::check(); res = initializer.execute(); node_init_result = initializer.getResult(); @@ -191,7 +191,7 @@ initNetwork(NodeInitializationResult& node_init_result) template int Node:: -start(NodeInitializationResult& node_init_result) +start(NetworkCompatibilityCheckResult& node_init_result) { if (started_) { diff --git a/libuavcan/include/uavcan/protocol/node_initializer.hpp b/libuavcan/include/uavcan/protocol/network_compat_checker.hpp similarity index 74% rename from libuavcan/include/uavcan/protocol/node_initializer.hpp rename to libuavcan/include/uavcan/protocol/network_compat_checker.hpp index 82ad1e0f96..e13448202e 100644 --- a/libuavcan/include/uavcan/protocol/node_initializer.hpp +++ b/libuavcan/include/uavcan/protocol/network_compat_checker.hpp @@ -14,7 +14,7 @@ namespace uavcan { -struct UAVCAN_EXPORT NodeInitializationResult +struct UAVCAN_EXPORT NetworkCompatibilityCheckResult { NodeID conflicting_node; bool isOk() const { return !conflicting_node.isValid(); } @@ -24,21 +24,21 @@ struct UAVCAN_EXPORT NodeInitializationResult * This class does not issue GlobalDiscoveryRequest, assuming that it was done already by the caller. * Instantiated object can execute() only once. Objects of this class are intended for stack allocation. */ -class UAVCAN_EXPORT NodeInitializer : Noncopyable +class UAVCAN_EXPORT NetworkCompatibilityChecker : Noncopyable { typedef std::bitset NodeIDMask; - typedef MethodBinder&)> + typedef MethodBinder&)> NodeStatusCallback; - typedef MethodBinder&)> + typedef MethodBinder&)> CATSResponseCallback; Subscriber ns_sub_; ServiceClient cats_cln_; NodeIDMask nid_mask_present_; NodeIDMask nid_mask_checked_; - NodeInitializationResult result_; + NetworkCompatibilityCheckResult result_; DataTypeKind checking_dtkind_; bool last_cats_request_ok_; @@ -59,7 +59,7 @@ class UAVCAN_EXPORT NodeInitializer : Noncopyable int checkNodes(); public: - NodeInitializer(INode& node) + NetworkCompatibilityChecker(INode& node) : ns_sub_(node) , cats_cln_(node) , checking_dtkind_(DataTypeKindService) @@ -68,7 +68,7 @@ public: int execute(); - const NodeInitializationResult& getResult() const { return result_; } + const NetworkCompatibilityCheckResult& getResult() const { return result_; } static int publishGlobalDiscoveryRequest(INode& node); }; diff --git a/libuavcan/src/protocol/uc_node_initializer.cpp b/libuavcan/src/protocol/uc_network_compat_checker.cpp similarity index 81% rename from libuavcan/src/protocol/uc_node_initializer.cpp rename to libuavcan/src/protocol/uc_network_compat_checker.cpp index 52b194663c..fc0e9506dc 100644 --- a/libuavcan/src/protocol/uc_node_initializer.cpp +++ b/libuavcan/src/protocol/uc_network_compat_checker.cpp @@ -4,14 +4,14 @@ #include #include -#include +#include #include #include namespace uavcan { -MonotonicDuration NodeInitializer::getNetworkDiscoveryDelay() const +MonotonicDuration NetworkCompatibilityChecker::getNetworkDiscoveryDelay() const { // Base duration is constant - NodeStatus publication period MonotonicDuration dur = MonotonicDuration::fromMSec(protocol::NodeStatus::PUBLICATION_PERIOD_MS); @@ -20,7 +20,7 @@ MonotonicDuration NodeInitializer::getNetworkDiscoveryDelay() const return dur; } -NodeID NodeInitializer::findNextUncheckedNode() +NodeID NetworkCompatibilityChecker::findNextUncheckedNode() { for (int i = 1; i <= NodeID::Max; i++) { @@ -33,7 +33,7 @@ NodeID NodeInitializer::findNextUncheckedNode() return NodeID(); } -int NodeInitializer::waitForCATSResponse() +int NetworkCompatibilityChecker::waitForCATSResponse() { while (cats_cln_.isPending()) { @@ -46,7 +46,7 @@ int NodeInitializer::waitForCATSResponse() return 0; } -void NodeInitializer::handleNodeStatus(const ReceivedDataStructure& msg) +void NetworkCompatibilityChecker::handleNodeStatus(const ReceivedDataStructure& msg) { if (!nid_mask_present_.test(msg.getSrcNodeID().get())) { @@ -61,7 +61,7 @@ void NodeInitializer::handleNodeStatus(const ReceivedDataStructure& resp) +void NetworkCompatibilityChecker::handleCATSResponse(ServiceCallResult& resp) { last_cats_request_ok_ = resp.isSuccessful(); if (last_cats_request_ok_) @@ -80,7 +80,7 @@ void NodeInitializer::handleCATSResponse(ServiceCallResult::check(); StaticAssert::check(); @@ -110,7 +110,7 @@ int NodeInitializer::checkOneNodeOneDataTypeKind(NodeID nid, DataTypeKind kind) return 0; } -int NodeInitializer::checkOneNode(NodeID nid) +int NetworkCompatibilityChecker::checkOneNode(NodeID nid) { if (nid == getNode().getNodeID()) { @@ -126,7 +126,7 @@ int NodeInitializer::checkOneNode(NodeID nid) return checkOneNodeOneDataTypeKind(nid, DataTypeKindService); } -int NodeInitializer::checkNodes() +int NetworkCompatibilityChecker::checkNodes() { nid_mask_checked_.reset(); while (true) @@ -150,7 +150,7 @@ int NodeInitializer::checkNodes() return 0; } -int NodeInitializer::execute() +int NetworkCompatibilityChecker::execute() { int res = 0; @@ -160,13 +160,13 @@ int NodeInitializer::execute() goto exit; } - res = ns_sub_.start(NodeStatusCallback(this, &NodeInitializer::handleNodeStatus)); + res = ns_sub_.start(NodeStatusCallback(this, &NetworkCompatibilityChecker::handleNodeStatus)); if (res < 0) { goto exit; } - cats_cln_.setCallback(CATSResponseCallback(this, &NodeInitializer::handleCATSResponse)); + cats_cln_.setCallback(CATSResponseCallback(this, &NetworkCompatibilityChecker::handleCATSResponse)); res = cats_cln_.init(); if (res < 0) { @@ -187,7 +187,7 @@ exit: return res; } -int NodeInitializer::publishGlobalDiscoveryRequest(INode& node) +int NetworkCompatibilityChecker::publishGlobalDiscoveryRequest(INode& node) { Publisher pub(node); return pub.broadcast(protocol::GlobalDiscoveryRequest()); diff --git a/libuavcan/test/node/node.cpp b/libuavcan/test/node/node.cpp index 5e874ba8c8..3cb0f3c2af 100644 --- a/libuavcan/test/node/node.cpp +++ b/libuavcan/test/node/node.cpp @@ -58,7 +58,7 @@ TEST(Node, Basic) /* * Init the second node - network is empty */ - uavcan::NodeInitializationResult result; + uavcan::NetworkCompatibilityCheckResult result; ASSERT_LE(0, node2.start(result)); ASSERT_FALSE(node_status_monitor.findNodeWithWorstStatus().isValid()); diff --git a/libuavcan/test/protocol/node_initializer.cpp b/libuavcan/test/protocol/network_compat_checker.cpp similarity index 69% rename from libuavcan/test/protocol/node_initializer.cpp rename to libuavcan/test/protocol/network_compat_checker.cpp index 5edb1519e5..00220f9328 100644 --- a/libuavcan/test/protocol/node_initializer.cpp +++ b/libuavcan/test/protocol/network_compat_checker.cpp @@ -3,7 +3,7 @@ */ #include -#include +#include #include #include #include @@ -45,27 +45,29 @@ struct NodeInitializerRemoteContext }; -TEST(NodeInitializer, Size) +TEST(NetworkCompatibilityChecker, Size) { - std::cout << "sizeof(uavcan::NodeInitializer): " << sizeof(uavcan::NodeInitializer) << std::endl; - ASSERT_TRUE(sizeof(uavcan::NodeInitializer) < 2048); + // Objects are subject for stack allocation, hence the size matters + std::cout << "sizeof(uavcan::NetworkCompatibilityChecker): " + << sizeof(uavcan::NetworkCompatibilityChecker) << std::endl; + ASSERT_TRUE(sizeof(uavcan::NetworkCompatibilityChecker) < 2048); } -TEST(NodeInitializer, EmptyNetwork) +TEST(NetworkCompatibilityChecker, EmptyNetwork) { registerTypes(); InterlinkedTestNodesWithSysClock nodes; - ASSERT_LE(0, uavcan::NodeInitializer::publishGlobalDiscoveryRequest(nodes.a)); + ASSERT_LE(0, uavcan::NetworkCompatibilityChecker::publishGlobalDiscoveryRequest(nodes.a)); - uavcan::NodeInitializer ni(nodes.a); + uavcan::NetworkCompatibilityChecker ni(nodes.a); ASSERT_LE(0, ni.execute()); ASSERT_TRUE(ni.getResult().isOk()); } -TEST(NodeInitializer, Success) +TEST(NetworkCompatibilityChecker, Success) { registerTypes(); InterlinkedTestNodesWithSysClock nodes; @@ -75,29 +77,29 @@ TEST(NodeInitializer, Success) BackgroundSpinner bgspinner(nodes.b, nodes.a); bgspinner.startPeriodic(uavcan::MonotonicDuration::fromMSec(10)); - ASSERT_LE(0, uavcan::NodeInitializer::publishGlobalDiscoveryRequest(nodes.a)); + ASSERT_LE(0, uavcan::NetworkCompatibilityChecker::publishGlobalDiscoveryRequest(nodes.a)); - uavcan::NodeInitializer ni(nodes.a); + uavcan::NetworkCompatibilityChecker ni(nodes.a); ASSERT_LE(0, ni.execute()); ASSERT_TRUE(ni.getResult().isOk()); } -TEST(NodeInitializer, RequestTimeout) +TEST(NetworkCompatibilityChecker, RequestTimeout) { registerTypes(); InterlinkedTestNodesWithSysClock nodes; NodeInitializerRemoteContext remote(nodes.b); remote.start(); - ASSERT_LE(0, uavcan::NodeInitializer::publishGlobalDiscoveryRequest(nodes.a)); + ASSERT_LE(0, uavcan::NetworkCompatibilityChecker::publishGlobalDiscoveryRequest(nodes.a)); - uavcan::NodeInitializer ni(nodes.a); + uavcan::NetworkCompatibilityChecker ni(nodes.a); ASSERT_GT(0, ni.execute()); // There is no background spinner, so CATS request will time out } -TEST(NodeInitializer, NodeIDCollision) +TEST(NetworkCompatibilityChecker, NodeIDCollision) { registerTypes(); InterlinkedTestNodesWithSysClock nodes(8, 8); // Same NID @@ -107,9 +109,9 @@ TEST(NodeInitializer, NodeIDCollision) BackgroundSpinner bgspinner(nodes.b, nodes.a); bgspinner.startPeriodic(uavcan::MonotonicDuration::fromMSec(10)); - ASSERT_LE(0, uavcan::NodeInitializer::publishGlobalDiscoveryRequest(nodes.a)); + ASSERT_LE(0, uavcan::NetworkCompatibilityChecker::publishGlobalDiscoveryRequest(nodes.a)); - uavcan::NodeInitializer ni(nodes.a); + uavcan::NetworkCompatibilityChecker ni(nodes.a); ASSERT_LE(0, ni.execute()); ASSERT_FALSE(ni.getResult().isOk()); ASSERT_EQ(8, ni.getResult().conflicting_node.get()); diff --git a/libuavcan_drivers/linux/test/test_node.cpp b/libuavcan_drivers/linux/test/test_node.cpp index a32037eb46..ebdbbeb553 100644 --- a/libuavcan_drivers/linux/test/test_node.cpp +++ b/libuavcan_drivers/linux/test/test_node.cpp @@ -24,7 +24,7 @@ static uavcan_linux::NodePtr initNode(const std::vector& ifaces, ua * Starting the node. This may take a few seconds. */ std::cout << "Starting the node..." << std::endl; - uavcan::NodeInitializationResult init_result; + uavcan::NetworkCompatibilityCheckResult init_result; const int start_res = node->start(init_result); std::cout << "Start returned: " << start_res << std::endl; ENFORCE(0 == start_res); diff --git a/libuavcan_drivers/linux/test/test_node_status_monitor.cpp b/libuavcan_drivers/linux/test/test_node_status_monitor.cpp index 257eda7034..a2f7518dab 100644 --- a/libuavcan_drivers/linux/test/test_node_status_monitor.cpp +++ b/libuavcan_drivers/linux/test/test_node_status_monitor.cpp @@ -109,7 +109,7 @@ static uavcan_linux::NodePtr initNode(const std::vector& ifaces, ua node->setNodeID(nid); node->setName(name.c_str()); - uavcan::NodeInitializationResult init_result; + uavcan::NetworkCompatibilityCheckResult init_result; const int start_res = node->start(init_result); ENFORCE(0 == start_res); if (!init_result.isOk()) diff --git a/libuavcan_drivers/linux/test/test_time_sync.cpp b/libuavcan_drivers/linux/test/test_time_sync.cpp index 91feb32bdd..ae09aa6c4c 100644 --- a/libuavcan_drivers/linux/test/test_time_sync.cpp +++ b/libuavcan_drivers/linux/test/test_time_sync.cpp @@ -17,7 +17,7 @@ static uavcan_linux::NodePtr initNode(const std::vector& ifaces, ua node->setNodeID(nid); node->setName(name.c_str()); - uavcan::NodeInitializationResult init_result; + uavcan::NetworkCompatibilityCheckResult init_result; const int start_res = node->start(init_result); ENFORCE(0 == start_res); if (!init_result.isOk())