MCPcopy Create free account
hub / github.com/BehaviorTree/Groot / getTreeFromServer

Method getTreeFromServer

bt_editor/sidepanel_monitor.cpp:88–153  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

86}
87
88bool 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 );

Callers

nothing calls this directly

Calls 2

BuildTreeFromFlatbuffersFunction · 0.85
nodesCountMethod · 0.80

Tested by

no test coverage detected