コード例 #1
0
MMSimpleConnectProperties *
mm_simple_connect_properties_new_from_string (const gchar *str,
                                              GError **error)
{
    ParseKeyValueContext ctx;

    ctx.error = NULL;
    ctx.allowed_modes_str = NULL;
    ctx.preferred_mode_str = NULL;
    ctx.properties = mm_simple_connect_properties_new ();

    mm_common_parse_key_value_string (str,
                                      &ctx.error,
                                      (MMParseKeyValueForeachFn)key_value_foreach,
                                      &ctx);

    /* If error, destroy the object */
    if (ctx.error) {
        g_propagate_error (error, ctx.error);
        g_object_unref (ctx.properties);
        ctx.properties = NULL;
    }
    else if (ctx.allowed_modes_str || ctx.preferred_mode_str) {
        MMModemMode allowed_modes;
        MMModemMode preferred_mode;

        allowed_modes = (ctx.allowed_modes_str ?
                         mm_common_get_modes_from_string (ctx.allowed_modes_str,
                                                          &ctx.error) :
                         MM_MODEM_MODE_ANY);
        if (!ctx.error) {
            preferred_mode = (ctx.preferred_mode_str ?
                              mm_common_get_modes_from_string (ctx.preferred_mode_str,
                                                               &ctx.error) :
                              MM_MODEM_MODE_NONE);
        }

        if (ctx.error) {
            g_propagate_error (error, ctx.error);
            g_object_unref (ctx.properties);
            ctx.properties = NULL;
        } else {
            mm_simple_connect_properties_set_allowed_modes (
                ctx.properties,
                allowed_modes,
                preferred_mode);
        }
    }

    g_free (ctx.allowed_modes_str);
    g_free (ctx.preferred_mode_str);

    return ctx.properties;
}
コード例 #2
0
MMBearerProperties *
mm_bearer_properties_new_from_string (const gchar *str,
                                      GError **error)
{
    ParseKeyValueContext ctx;

    ctx.error = NULL;
    ctx.properties = mm_bearer_properties_new ();

    mm_common_parse_key_value_string (str,
                                      &ctx.error,
                                      (MMParseKeyValueForeachFn)key_value_foreach,
                                      &ctx);
    /* If error, destroy the object */
    if (ctx.error) {
        g_propagate_error (error, ctx.error);
        g_object_unref (ctx.properties);
        ctx.properties = NULL;
    }

    return ctx.properties;
}