2 #include "DBusMessageHandler.h"
3 #include "CommandSender.h"
4 #include "DBusConfiguration.h"
11 DBusMessageHandler::DBusMessageHandler()
18 mReveiveMessage(NULL),
21 DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBUSMessageHandler constructed"));
24 DBusMessageHandler::~DBusMessageHandler()
26 DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBUSMessageHandler destructed"));
29 void DBusMessageHandler::initReceive(DBusMessage* msg)
33 if (!dbus_message_iter_init(msg, &mDBusMessageIter))
35 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::initReceive DBus Message has no arguments!"));
36 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
37 mErrorMsg="DBUS Message has no arguments!";
41 void DBusMessageHandler::initReply(DBusMessage* msg)
44 mDbusMessage = dbus_message_new_method_return(msg);
45 if (mDbusMessage==NULL) {
46 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::initReply Cannot allocate DBus message!"));
47 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
48 mErrorMsg="Cannot create reply!";
50 dbus_message_iter_init_append(mDbusMessage, &mDBusMessageIter);
53 void DBusMessageHandler::initSignal(std::string path, std::string signalName)
55 assert(!path.empty());
56 assert(!signalName.empty());
57 std::string completePath=std::string(DBUS_SERVICE_OBJECT_PATH)+"/"+path;
58 mDbusMessage=dbus_message_new_signal(completePath.c_str(),DBUS_SERVICE_PREFIX,signalName.c_str());
60 if (mDbusMessage == NULL)
62 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::initSignal Cannot allocate DBus message!"));
66 void DBusMessageHandler::sendMessage()
68 assert(mDBusConnection!=NULL);
69 mSerial=dbus_message_get_serial(mReveiveMessage);
70 if (!mErrorName.empty()) {
71 mDbusMessage = dbus_message_new_error(mReveiveMessage, mErrorName.c_str(), mErrorMsg.c_str());
73 if (!dbus_connection_send(mDBusConnection, mDbusMessage, &mSerial))
75 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::sendMessage cannot send message!"));
77 dbus_connection_flush(mDBusConnection);
78 dbus_message_unref(mDbusMessage);
82 char* DBusMessageHandler::getString()
86 if (DBUS_TYPE_STRING != dbus_message_iter_get_arg_type(&mDBusMessageIter))
88 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getString DBUS handler argument is no String!"));
89 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
90 mErrorMsg="DBus argument is no string";
94 dbus_message_iter_get_basic(&mDBusMessageIter, ¶m);
95 dbus_message_iter_next(&mDBusMessageIter);
100 dbus_bool_t DBusMessageHandler::getBool()
102 dbus_bool_t boolparam=false;
104 if (DBUS_TYPE_BOOLEAN != dbus_message_iter_get_arg_type(&mDBusMessageIter))
106 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getBool DBUS handler argument is no bool!"));
107 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
108 mErrorMsg="DBus argument is no bool";
112 dbus_message_iter_get_basic(&mDBusMessageIter, &boolparam);
113 dbus_message_iter_next(&mDBusMessageIter);
118 char DBusMessageHandler::getByte()
122 if (DBUS_TYPE_BYTE != dbus_message_iter_get_arg_type(&mDBusMessageIter))
124 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getByte DBUS handler argument is no byte!"));
125 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
126 mErrorMsg="DBus argument is no byte";
130 dbus_message_iter_get_basic(&mDBusMessageIter, ¶m);
131 dbus_message_iter_next(&mDBusMessageIter);
136 dbus_uint16_t DBusMessageHandler::getUInt()
140 if (DBUS_TYPE_UINT16 != dbus_message_iter_get_arg_type(&mDBusMessageIter))
142 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getUInt DBUS handler argument is no uint16_t!"));
143 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
144 mErrorMsg="DBus argument is no uint16_t";
148 dbus_message_iter_get_basic(&mDBusMessageIter, ¶m);
149 dbus_message_iter_next(&mDBusMessageIter);
154 dbus_int16_t DBusMessageHandler::getInt()
158 if (DBUS_TYPE_INT16 != dbus_message_iter_get_arg_type(&mDBusMessageIter))
160 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getInt DBUS handler argument is no int16_t!"));
161 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
162 mErrorMsg="DBus argument is no int16_t";
166 dbus_message_iter_get_basic(&mDBusMessageIter, ¶m);
167 dbus_message_iter_next(&mDBusMessageIter);
172 double DBusMessageHandler::getDouble()
175 if (DBUS_TYPE_DOUBLE != dbus_message_iter_get_arg_type(&mDBusMessageIter))
177 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getDouble DBUS handler argument is no double!"));
178 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
179 mErrorMsg="DBus argument is no double";
183 dbus_message_iter_get_basic(&mDBusMessageIter, ¶m);
184 dbus_message_iter_next(&mDBusMessageIter);
189 void DBusMessageHandler::getProperty(dbus_int16_t & type, dbus_int16_t & value)
191 DBusMessageIter arrayIter;
192 if (DBUS_TYPE_STRUCT != dbus_message_iter_get_arg_type(&mDBusMessageIter))
194 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getProperty DBUS handler argument is no array!"));
195 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
196 mErrorMsg="DBus argument is no array";
200 dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter);
201 dbus_message_iter_get_basic(&arrayIter, &type);
202 dbus_message_iter_next(&arrayIter);
203 dbus_message_iter_get_basic(&arrayIter, &value);
204 dbus_message_iter_next(&mDBusMessageIter);
208 void DBusMessageHandler::append(bool toAppend)
210 dbus_bool_t mybool=toAppend;
211 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_BOOLEAN, &mybool))
213 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
214 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
215 mErrorMsg="Cannot create reply!";
220 void DBusMessageHandler::append(double toAppend)
222 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_DOUBLE, &toAppend))
224 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
225 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
226 mErrorMsg="Cannot create reply!";
230 void DBusMessageHandler::append(char toAppend)
232 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_BYTE, &toAppend))
234 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
235 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
236 mErrorMsg="Cannot create reply!";
241 void DBusMessageHandler::append(dbus_int16_t toAppend)
243 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_INT16, &toAppend))
245 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
246 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
247 mErrorMsg="Cannot create reply!";
251 void DBusMessageHandler::append(dbus_uint16_t toAppend)
253 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_UINT16, &toAppend))
255 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
256 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
257 mErrorMsg="Cannot create reply!";
261 void DBusMessageHandler::setDBusConnection(DBusConnection *& connection)
263 assert(connection!=NULL);
264 mDBusConnection=connection;
267 void DBusMessageHandler::append(const am::am_SinkType_s& sinkType)
269 DBusMessageIter structIter;
270 DBusMessageIter structAvailIter;
271 dbus_bool_t success=true;
272 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, "us(ii)iiu", &structIter);
273 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sinkType.sinkID);
274 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &sinkType.name);
276 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, "(ii)", &structAvailIter);
277 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sinkType.availability.availability);
278 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sinkType.availability.availabilityReason);
279 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structAvailIter);
281 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &sinkType.volume);
282 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &sinkType.muteState);
283 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sinkType.sinkClassID);
284 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
288 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
289 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
290 mErrorMsg="Cannot create reply!";
294 void DBusMessageHandler::append(const am::am_SourceType_s & sourceType)
296 DBusMessageIter structIter;
297 DBusMessageIter structAvailIter;
298 dbus_bool_t success=true;
299 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, "us(ii)u", &structIter);
300 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sourceType.sourceID);
301 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &sourceType.name);
303 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, "(ii)", &structAvailIter);
304 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sourceType.availability.availability);
305 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sourceType.availability.availabilityReason);
306 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structAvailIter);
308 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sourceType.sourceClassID);
309 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
313 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
314 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
315 mErrorMsg="Cannot create reply!";
319 void DBusMessageHandler::append(const am::am_MainSoundProperty_s mainSoundProperty)
321 DBusMessageIter structIter;
322 dbus_bool_t success=true;
323 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, "(ii)", &structIter);
324 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &mainSoundProperty.type);
325 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &mainSoundProperty.value);
326 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
330 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
331 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
332 mErrorMsg="Cannot create reply!";
336 void DBusMessageHandler::append(const am::am_Availability_s & availability)
338 DBusMessageIter structAvailIter;
339 dbus_bool_t success=true;
340 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, "(ii)", &structAvailIter);
341 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &availability.availability);
342 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &availability.availabilityReason);
343 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structAvailIter);
347 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
348 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
349 mErrorMsg="Cannot create reply!";
353 void DBusMessageHandler::append(const am::am_SystemProperty_s & SystemProperty)
355 DBusMessageIter structIter;
356 dbus_bool_t success=true;
357 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, "(ii)", &structIter);
358 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &SystemProperty.type);
359 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &SystemProperty.value);
360 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
364 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
365 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
366 mErrorMsg="Cannot create reply!";
370 void DBusMessageHandler::append(const std::vector<am::am_MainConnectionType_s>& listMainConnections)
372 DBusMessageIter arrayIter;
373 DBusMessageIter structIter;
374 std::vector<am::am_MainConnectionType_s>::const_iterator listIterator=listMainConnections.begin();
375 dbus_bool_t success=true;
377 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qqqnn)", &arrayIter);
378 for(;listIterator<listMainConnections.end();++listIterator)
380 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
381 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->mainConnectionID);
382 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sourceID);
383 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sinkID);
384 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->delay);
385 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->connectionState);
386 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
388 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
392 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
393 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
394 mErrorMsg="Cannot create reply!";
398 void DBusMessageHandler::append(const std::vector<am::am_SinkType_s> & listMainSinks)
400 DBusMessageIter arrayIter;
401 DBusMessageIter structIter;
402 DBusMessageIter availIter;
403 std::vector<am::am_SinkType_s>::const_iterator listIterator=listMainSinks.begin();
404 dbus_bool_t success=true;
406 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qs(nn)nnq)", &arrayIter);
407 for(;listIterator<listMainSinks.end();++listIterator)
409 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
410 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sinkID);
411 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &listIterator->name);
412 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_STRUCT, NULL, &availIter);
413 success=success && dbus_message_iter_append_basic(&availIter, DBUS_TYPE_INT16, &listIterator->availability.availability);
414 success=success && dbus_message_iter_append_basic(&availIter, DBUS_TYPE_INT16, &listIterator->availability.availabilityReason);
415 success=success && dbus_message_iter_close_container(&structIter, &availIter);
416 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->volume);
417 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->muteState);
418 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sinkClassID);
419 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
421 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
425 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
426 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
427 mErrorMsg="Cannot create reply!";
433 void DBusMessageHandler::append(const std::vector<am::am_SourceType_s> & listMainSources)
435 DBusMessageIter arrayIter;
436 DBusMessageIter structIter;
437 DBusMessageIter availIter;
438 std::vector<am::am_SourceType_s>::const_iterator listIterator=listMainSources.begin();
439 dbus_bool_t success=true;
441 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qs(nn)q)", &arrayIter);
442 for(;listIterator<listMainSources.end();++listIterator)
444 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
445 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sourceID);
446 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &listIterator->name);
447 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_STRUCT, NULL, &availIter);
448 success=success && dbus_message_iter_append_basic(&availIter, DBUS_TYPE_INT16, &listIterator->availability.availability);
449 success=success && dbus_message_iter_append_basic(&availIter, DBUS_TYPE_INT16, &listIterator->availability.availabilityReason);
450 success=success && dbus_message_iter_close_container(&structIter, &availIter);
451 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sourceClassID);
452 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
454 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
458 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
459 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
460 mErrorMsg="Cannot create reply!";
464 void DBusMessageHandler::append(const std::vector<am::am_MainSoundProperty_s> & listMainSoundProperties)
466 DBusMessageIter arrayIter;
467 DBusMessageIter structIter;
468 std::vector<am::am_MainSoundProperty_s>::const_iterator listIterator=listMainSoundProperties.begin();
469 dbus_bool_t success=true;
471 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(nn)", &arrayIter);
472 for(;listIterator<listMainSoundProperties.end();++listIterator)
474 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
475 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->type);
476 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->value);
477 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
479 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
483 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
484 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
485 mErrorMsg="Cannot create reply!";
489 void DBusMessageHandler::append(const std::vector<am::am_SourceClass_s> & listSourceClasses)
491 DBusMessageIter arrayIter;
492 DBusMessageIter structIter;
493 DBusMessageIter propIter;
494 DBusMessageIter innerIter;
495 std::vector<am::am_SourceClass_s>::const_iterator listIterator=listSourceClasses.begin();
496 dbus_bool_t success=true;
498 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qsa(nn))", &arrayIter);
499 for(;listIterator<listSourceClasses.end();++listIterator)
501 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
502 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sourceClassID);
503 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &listIterator->name);
504 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_ARRAY, "(nn)", &innerIter);
506 std::vector<am::am_ClassProperty_s>::const_iterator listInnerIterator=listIterator->listClassProperties.begin();
507 for(;listInnerIterator<listIterator->listClassProperties.end();++listInnerIterator)
509 success=success && dbus_message_iter_open_container(&innerIter, DBUS_TYPE_STRUCT, NULL, &propIter);
510 success=success && dbus_message_iter_append_basic(&propIter, DBUS_TYPE_INT16, &listInnerIterator->classProperty);
511 success=success && dbus_message_iter_append_basic(&propIter, DBUS_TYPE_INT16, &listInnerIterator->value);
512 success=success && dbus_message_iter_close_container(&innerIter, &propIter);
514 success=success && dbus_message_iter_close_container(&structIter, &innerIter);
515 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
517 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
521 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
522 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
523 mErrorMsg="Cannot create reply!";
527 void DBusMessageHandler::append(const std::vector<am::am_SinkClass_s> & listSinkClasses)
529 DBusMessageIter arrayIter;
530 DBusMessageIter structIter;
531 DBusMessageIter propIter;
532 DBusMessageIter innerIter;
533 std::vector<am::am_SinkClass_s>::const_iterator listIterator=listSinkClasses.begin();
534 dbus_bool_t success=true;
536 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qsa(nn))", &arrayIter);
537 for(;listIterator<listSinkClasses.end();++listIterator)
539 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
540 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sinkClassID);
541 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &listIterator->name);
542 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_ARRAY, "(nn)", &innerIter);
544 std::vector<am::am_ClassProperty_s>::const_iterator listInnerIterator=listIterator->listClassProperties.begin();
545 for(;listInnerIterator<listIterator->listClassProperties.end();++listInnerIterator)
547 success=success && dbus_message_iter_open_container(&innerIter, DBUS_TYPE_STRUCT, NULL, &propIter);
548 success=success && dbus_message_iter_append_basic(&propIter, DBUS_TYPE_INT16, &listInnerIterator->classProperty);
549 success=success && dbus_message_iter_append_basic(&propIter, DBUS_TYPE_INT16, &listInnerIterator->value);
550 success=success && dbus_message_iter_close_container(&innerIter, &propIter);
552 success=success && dbus_message_iter_close_container(&structIter, &innerIter);
553 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
555 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
559 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
560 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
561 mErrorMsg="Cannot create reply!";
565 void DBusMessageHandler::append(const std::vector<am::am_SystemProperty_s> & listSystemProperties)
567 DBusMessageIter arrayIter;
568 DBusMessageIter structIter;
569 std::vector<am::am_SystemProperty_s>::const_iterator listIterator=listSystemProperties.begin();
570 dbus_bool_t success=true;
572 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(nn)", &arrayIter);
573 for(;listIterator<listSystemProperties.end();++listIterator)
575 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
576 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->type);
577 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->value);
578 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
580 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
584 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
585 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
586 mErrorMsg="Cannot create reply!";