| 86 | } |
| 87 | |
| 88 | bool SidepanelMonitor::getTreeFromServer() |
| 89 | { |
| 90 | try{ |
| 91 | zmq::message_t request(0); |
| 92 | zmq::message_t reply; |
| 93 | |
| 94 | zmq::socket_t zmq_client( _zmq_context, ZMQ_REQ ); |
| 95 | zmq_client.connect( _connection_address_req.c_str() ); |
| 96 | |
| 97 | int timeout_ms = 1000; |
| 98 | zmq_client.setsockopt(ZMQ_RCVTIMEO,&timeout_ms, sizeof(int) ); |
| 99 | |
| 100 | zmq_client.send(request); |
| 101 | |
| 102 | bool received = zmq_client.recv(&reply); |
| 103 | if( ! received ) |
| 104 | { |
| 105 | return false; |
| 106 | } |
| 107 | |
| 108 | const char* buffer = reinterpret_cast<const char*>(reply.data()); |
| 109 | auto fb_behavior_tree = Serialization::GetBehaviorTree( buffer ); |
| 110 | |
| 111 | auto res_pair = BuildTreeFromFlatbuffers( fb_behavior_tree ); |
| 112 | |
| 113 | _loaded_tree = std::move( res_pair.first ); |
| 114 | _uid_to_index = std::move( res_pair.second ); |
| 115 | |
| 116 | // add new models to registry |
| 117 | for(const auto& tree_node: _loaded_tree.nodes()) |
| 118 | { |
| 119 | const auto& registration_ID = tree_node.model.registration_ID; |
| 120 | if( BuiltinNodeModels().count(registration_ID) == 0) |
| 121 | { |
| 122 | addNewModel( tree_node.model ); |
| 123 | } |
| 124 | } |
| 125 | |
| 126 | try { |
| 127 | loadBehaviorTree( _loaded_tree, "BehaviorTree" ); |
| 128 | } |
| 129 | catch (std::exception& err) { |
| 130 | QMessageBox messageBox; |
| 131 | messageBox.critical(this,"Error Connecting to remote server", err.what() ); |
| 132 | messageBox.show(); |
| 133 | return false; |
| 134 | } |
| 135 | |
| 136 | std::vector<std::pair<int, NodeStatus>> node_status; |
| 137 | node_status.reserve(_loaded_tree.nodesCount()); |
| 138 | |
| 139 | // qDebug() << "--------"; |
| 140 | |
| 141 | for(size_t t=0; t < _loaded_tree.nodesCount(); t++) |
| 142 | { |
| 143 | node_status.push_back( { t, _loaded_tree.nodes()[t].status } ); |
| 144 | } |
| 145 | emit changeNodeStyle( "BehaviorTree", node_status ); |
nothing calls this directly
no test coverage detected