### Method

# GUPnP ServiceProxyAction get_result_list

since: 1.2.0

#### Declaration [src]

    gboolean
    gupnp_service_proxy_action_get_result_list (
      GUPnPServiceProxyAction* action,
      GList* out_names,
      GList* out_types,
      GList** out_values,
      GError** error
    )

#### Description [src]

A variant of `gupnp_service_proxy_action_get_result()` that takes lists of out-parameter names, types and place-holders for values.

The returned list in `out_values` must be freed using `g_list_free` and each element in it using `g_value_unset` and `g_free`.

    void on_action_finished(GObject *object, GAsyncResult *res, gpointer user_data)
    {
        GUPnPServiceProxyAction *action;
        GError *error;

        action = gupnp_service_proxy_call_action_finish (GUPNP_SERVICE_PROXY (object),
                                                         res,
                                                         &error);

        if (error != NULL) {
                 g_print ("Call failed: %s", error->message);
                 g_clear_error (&error);
                 return;
        }

        GList *out_args = NULL;
        out_args = g_list_append (out_args, "PlayMode");
        out_args = g_list_append (out_args, "RecQualityMode");
        GList *out_types = NULL;
        out_types = g_list_append (out_types, GSIZE_TO_POINTER (G_TYPE_STRING));
        out_types = g_list_append (out_types, GSIZE_TO_POINTER (G_TYPE_STRING));
        GList *out_values = NULL;

        if (!gupnp_service_proxy_action_get_result_list (action,
                                                         out_args,
                                                         out_types,
                                                         &out_values,
                                                         &error)) {
                 g_print ("Getting results failed: %s", error->message);
                 g_clear_error (&error);
                 return;
        }

        GList *iter = out_values;
        while (iter != NULL) {
            GValue *value = iter->data;
            g_print ("Result: %s\n", g_value_get_string (value));
            g_value_unset (value);
            g_free (value);
            iter = g_list_remove_link (iter, iter);
        }
        g_list_free (out_values);
    }

Available since: 1.2.0

#### Parameters

`out_names`

  Type: A list of `utf8`

  `GList` of ‘out’ parameter names (as strings).

  The data is owned by the caller of the method.
  Each element is a NUL terminated UTF-8 string.

`out_types`

  Type: A list of `GType`

  `GList` of types (as `GType`) that line up with `out_names`.

  The data is owned by the caller of the method.

`out_values`

  Type: A list of `const GValue*`

  `GList` of values (as `GValue`) that line up with `out_names` and `out_types`.

  The argument will be set by the function.
  The caller of the method takes ownership of the returned data, and is responsible for freeing it.

`error`

  Type: `GError **`

  The return location for a recoverable error.

  The argument can be `NULL`.
  If the return location is not `NULL`, then you must initialize it to a `NULL` `GError*`.
  The argument will be left initialized to `NULL` by the method if there are no errors.
  In case of error, the argument will be set to a newly allocated `GError`; the caller will take ownership of the data, and be responsible for freeing it.

#### Return value

Type: `gboolean`

`TRUE` on success.