void ServiceSubset::set(const std::list<std::string>& names) { std::list<std::string>::const_iterator i; for (i = names.begin(); i != names.end(); i++) { std::string s = *i; debug(LOG_DEBUG, DEBUG_LOG, 0, "set: %s", s.c_str()); set(string2type(s)); } }
DeviceName::DeviceName(const std::string& name) { // parse the device URL std::string::size_type pos = name.find(":"); _type = string2type(name.substr(0, pos)); std::string path = name.substr(pos + 1); // debug(LOG_DEBUG, DEBUG_LOG, 0, "path: %s", path.c_str()); split<DeviceName>(path, "/", *this); // debug(LOG_DEBUG, DEBUG_LOG, 0, "have %d components", size()); }
static DBusMessage *notify_update(DBusConnection *conn, DBusMessage *msg, void *user_data) { struct test_session *session = user_data; struct test_session_info *info = session->info; DBusMessageIter iter, array; GSList *allowed_bearers; LOG("session %p notify %s", session, session->notify_path); dbus_message_iter_init(msg, &iter); dbus_message_iter_recurse(&iter, &array); while (dbus_message_iter_get_arg_type(&array) == DBUS_TYPE_DICT_ENTRY) { DBusMessageIter entry, value; const char *key; dbus_message_iter_recurse(&array, &entry); dbus_message_iter_get_basic(&entry, &key); dbus_message_iter_next(&entry); dbus_message_iter_recurse(&entry, &value); switch (dbus_message_iter_get_arg_type(&value)) { case DBUS_TYPE_ARRAY: if (g_str_equal(key, "AllowedBearers") == TRUE) { allowed_bearers = session_parse_allowed_bearers(&value); g_slist_foreach(info->allowed_bearers, bearer_info_cleanup, NULL); g_slist_free(info->allowed_bearers); info->allowed_bearers = allowed_bearers; } else if (g_str_equal(key, "IPv4") == TRUE) { /* XXX */ } else if (g_str_equal(key, "IPv6") == TRUE) { /* XXX */ } else { g_assert(FALSE); return __connman_error_invalid_arguments(msg); } break; case DBUS_TYPE_BOOLEAN: if (g_str_equal(key, "Priority") == TRUE) { dbus_message_iter_get_basic(&value, &info->priority); } else if (g_str_equal(key, "AvoidHandover") == TRUE) { dbus_message_iter_get_basic(&value, &info->avoid_handover); } else if (g_str_equal(key, "StayConnected") == TRUE) { dbus_message_iter_get_basic(&value, &info->stay_connected); } else if (g_str_equal(key, "EmergencyCall") == TRUE) { dbus_message_iter_get_basic(&value, &info->ecall); } else { g_assert(FALSE); return __connman_error_invalid_arguments(msg); } break; case DBUS_TYPE_UINT32: if (g_str_equal(key, "PeriodicConnect") == TRUE) { dbus_message_iter_get_basic(&value, &info->periodic_connect); } else if (g_str_equal(key, "IdleTimeout") == TRUE) { dbus_message_iter_get_basic(&value, &info->idle_timeout); } else if (g_str_equal(key, "SessionMarker") == TRUE) { dbus_message_iter_get_basic(&value, &info->marker); } else { g_assert(FALSE); return __connman_error_invalid_arguments(msg); } break; case DBUS_TYPE_STRING: if (g_str_equal(key, "State") == TRUE) { const char *val; dbus_message_iter_get_basic(&value, &val); info->state = string2state(val); } else if (g_str_equal(key, "Bearer") == TRUE) { const char *val; dbus_message_iter_get_basic(&value, &val); if (info->bearer != NULL) g_free(info->bearer); info->bearer = g_strdup(val); } else if (g_str_equal(key, "Name") == TRUE) { const char *val; dbus_message_iter_get_basic(&value, &val); if (info->name != NULL) g_free(info->name); info->name = g_strdup(val); } else if (g_str_equal(key, "RoamingPolicy") == TRUE) { const char *val; dbus_message_iter_get_basic(&value, &val); info->roaming_policy = string2roamingpolicy(val); } else if (g_str_equal(key, "Interface") == TRUE) { const char *val; dbus_message_iter_get_basic(&value, &val); if (info->interface != NULL) g_free(info->interface); info->interface = g_strdup(val); } else if (g_str_equal(key, "ConnectionType") == TRUE) { const char *val; dbus_message_iter_get_basic(&value, &val); info->type = string2type(val); } else { g_assert(FALSE); return __connman_error_invalid_arguments(msg); } break; default: g_assert(FALSE); return __connman_error_invalid_arguments(msg); } dbus_message_iter_next(&array); } if (session->notify != NULL) session->notify(session); return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); }
void ServiceSubset::unset(const std::list<std::string>& names) { std::list<std::string>::const_iterator i; for (i = names.begin(); i != names.end(); i++) { unset(string2type(*i)); } }