23 SPD_TRACE(
"### Destroy Node [{}] ###",
mpNodeInfo->name());
96 std::shared_ptr<Node> pParent =
nullptr;
99 pParent =
static_cast<std::shared_ptr<Node>
>(
mpParent);
101 catch (std::bad_weak_ptr &) {
104 SPD_TRACE(
"Node::print() : name [{}] nodes [{}] publishers [{}] this [{}] parent [{}]",
mpNodeInfo->name(),
106 static_cast<void *>(pParent.get()));
122 if (
name() == whatName) {
141 if (whatUUID == node->uuid()) {
144 mChildNodes.erase(mChildNodes.begin() + iNode);
163 std::shared_ptr<Node> pParent =
164 static_cast<std::shared_ptr<Node>
>(pNode->
parent());
166 pNode = pParent.get();
168 catch (std::bad_weak_ptr &) {
174 SPD_TRACE(
"Node::publish() No publisher defined! Aborting publish()");
178 SPD_TRACE(
"Node::publish() Publishing from [{}] nPublishers [{}]", pNode->
name(),
mPublishers.size());
180 Json::Value jsonData;
181 pNode->
json(jsonData);
182 Json::StreamWriterBuilder builder;
183 builder.settings_[
"indentation"] =
"";
185 std::string outStr = Json::writeString(builder, jsonData);
187 for (
auto const & pub : pNode->
publishers()) {
188 SPD_TRACE(
"Node::publish() name [{}] data [{}]", pNode->
name(), outStr);
189 pub->publish(
"salsaMap", pNode->
name(), outStr);
std::shared_ptr< Node > find(std::string name) const
Find node by name.
std::vector< std::shared_ptr< Publisher > > mPublishers
List of publishers.
std::weak_ptr< Node > mpParent
Parent node.
Node(std::string name="", std::string uuid="")
std::vector< std::shared_ptr< Publisher > > publishers() const
Returns publishers.
void removeByUUID(std::string uuid)
Remove node by uuid.
NodeInfo * mpNodeInfo
Node Info.
virtual void json(Json::Value &root)
std::vector< std::shared_ptr< Node > > mChildNodes
List of nodes.
virtual void print() const
std::weak_ptr< Node > parent() const
Returns parent node.
std::string name() const
Returns node name.