MCPcopy Create free account
hub / github.com/MeshInspector/MeshLib / parseResponse

Function parseResponse

source/MRViewer/MRFileDialogPortal.cpp:258–329  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

256};
257
258std::optional<Response> parseResponse( DBusMessage* msg )
259{
260 Response result;
261
262 DBusMessageIter iter;
263 dbus_message_iter_init( msg, &iter );
264
265 if ( dbus_message_iter_get_arg_type( &iter ) != DBUS_TYPE_UINT32 )
266 return {};
267 dbus_message_iter_get_basic( &iter, &result.code );
268 if ( result.code != Response::Succeeded )
269 return result;
270
271 dbus_message_iter_next( &iter );
272
273 if ( dbus_message_iter_get_arg_type( &iter ) != DBUS_TYPE_ARRAY )
274 return {};
275 DBusMessageIter dict;
276 dbus_message_iter_recurse( &iter, &dict );
277 do
278 {
279 if ( dbus_message_iter_get_arg_type( &dict ) != DBUS_TYPE_DICT_ENTRY )
280 return {};
281 DBusMessageIter entry;
282 dbus_message_iter_recurse( &dict, &entry );
283
284 if ( dbus_message_iter_get_arg_type( &entry ) != DBUS_TYPE_STRING )
285 return {};
286 const char* key;
287 dbus_message_iter_get_basic( &entry, &key );
288
289 if ( !dbus_message_iter_next( &entry ) )
290 break;
291
292 if ( dbus_message_iter_get_arg_type( &entry ) != DBUS_TYPE_VARIANT )
293 return {};
294 DBusMessageIter varIter;
295 dbus_message_iter_recurse( &entry, &varIter );
296 if ( strcmp( key, "uris" ) == 0 )
297 {
298 if ( dbus_message_iter_get_arg_type( &varIter ) != DBUS_TYPE_ARRAY )
299 return {};
300 DBusMessageIter arrIter;
301 dbus_message_iter_recurse( &varIter, &arrIter );
302 do
303 {
304 if ( dbus_message_iter_get_arg_type( &arrIter ) != DBUS_TYPE_STRING )
305 return {};
306 const char* uri;
307 dbus_message_iter_get_basic( &arrIter, &uri );
308 result.uris.emplace_back( uri );
309 }
310 while ( dbus_message_iter_next( &arrIter ) );
311 }
312 else if ( strcmp( key, "current_filter" ) == 0 )
313 {
314 if ( dbus_message_iter_get_arg_type( &varIter ) != DBUS_TYPE_STRUCT )
315 return {};

Callers 1

waitForResponseFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected