## GUPnPServiceIntrospection GUPnPServiceIntrospection — Service introspection class. |

## Synopsis

    enum                GUPnPServiceActionArgDirection;
                        GUPnPServiceActionArgInfo;
                        GUPnPServiceActionInfo;
                        GUPnPServiceStateVariableInfo;
    struct              GUPnPServiceIntrospection;
    const GList *       gupnp_service_introspection_list_action_names
                                                            (GUPnPServiceIntrospection *introspection);
    const GList *       gupnp_service_introspection_list_actions
                                                            (GUPnPServiceIntrospection *introspection);
    const GUPnPServiceActionInfo * gupnp_service_introspection_get_action
                                                            (GUPnPServiceIntrospection *introspection,
                                                             const gchar *action_name);
    const GList *       gupnp_service_introspection_list_state_variable_names
                                                            (GUPnPServiceIntrospection *introspection);
    const GList *       gupnp_service_introspection_list_state_variables
                                                            (GUPnPServiceIntrospection *introspection);
    const GUPnPServiceStateVariableInfo * gupnp_service_introspection_get_state_variable
                                                            (GUPnPServiceIntrospection *introspection,
                                                             const gchar *variable_name);

## Object Hierarchy

      GObject
       +----GUPnPServiceIntrospection

## Properties

      "scpd"                     gpointer              : Write / Construct Only

## Description

The GUPnPServiceIntrospection class provides methods for service introspection based on information contained in its service description document (SCPD). There is no constructor provided for this class, please use gupnp_service_info_get_introspection or gupnp_service_info_get_introspection_async to create an GUPnPServiceIntrospection object for a specific service.

Note that all the introspection information is retreived from the service description document (SCPD) provided by the service and hence can not be guaranteed to be complete. A UPnP service is required to provide an SCPD but unfortunately, many services either do not provide this document or the document does not provide any or all of the introspection information.

This class exposes internals of the UPnP protocol and should not need to be used for regular device or control point development.

## Details

### enum GUPnPServiceActionArgDirection

    typedef enum {
            GUPNP_SERVICE_ACTION_ARG_DIRECTION_IN,
            GUPNP_SERVICE_ACTION_ARG_DIRECTION_OUT
    } GUPnPServiceActionArgDirection;

Represents the direction of a service state variable.

`GUPNP_SERVICE_ACTION_ARG_DIRECTION_IN` | An "in" variable, to the service.
`GUPNP_SERVICE_ACTION_ARG_DIRECTION_OUT` | An "out" variable, from the service.

### GUPnPServiceActionArgInfo

    typedef struct {
            char                          *name;
            GUPnPServiceActionArgDirection direction;
            char                          *related_state_variable;
            gboolean                       retval;
    } GUPnPServiceActionArgInfo;

This structure contains information about the argument of service action.

char *`name`; | The name of the action argument.
GUPnPServiceActionArgDirection `direction`; | The direction of the action argument.
char *`related_state_variable`; | The name of the state variable associated with this argument.
gboolean `retval`; | Whether this argument is the return value of the action.

### GUPnPServiceActionInfo

    typedef struct {
            char  *name;
            GList *arguments; /* list of #GUPnPServiceActionArgInfo */
    } GUPnPServiceActionInfo;

This structure contains information about a service action.

char *`name`; | The name of the action argument.
GList *`arguments`; | A GList of all the arguments (of type GUPnPServiceActionArgInfo) of this action. [type GList][element-type GUPnP.ServiceActionArgInfo]

### GUPnPServiceStateVariableInfo

    typedef struct {
            char    *name;
            gboolean send_events;
            gboolean is_numeric;
            GType    type;
            GValue   default_value;
            GValue   minimum;
            GValue   maximum;
            GValue   step;
            GList   *allowed_values;
    } GUPnPServiceStateVariableInfo;

This structure contains information about service state variable.

char *`name`; | The name of the state variable.
gboolean `send_events`; | Whether this state variable can source events.
gboolean `is_numeric`; | Wether this state variable is a numeric type (integer and float).
GType `type`; | The GType of this state variable.
GValue `default_value`; | The default value of this state variable.
GValue `minimum`; | The minimum value of this state variable. Only applies to numeric data types.
GValue `maximum`; | The maximum value of this state variable. Only applies to numeric data types.
GValue `step`; | The step value of this state variable. Only applies to numeric data types.
GList *`allowed_values`; | The allowed values of this state variable. Only applies to string data types. Unlike the other fields in this structure, this field contains a list of (char *) strings rather than GValues. [element-type utf8]

### struct GUPnPServiceIntrospection

    struct GUPnPServiceIntrospection;

This struct contains private data only, and should be accessed using the functions below.

### gupnp_service_introspection_list_action_names ()

    const GList *       gupnp_service_introspection_list_action_names
                                                            (GUPnPServiceIntrospection *introspection);

Returns a GList of names of all the actions in this service.

`introspection` : | A GUPnPServiceIntrospection
Returns : | (transfer none) (element-type utf8) : A GList of names of all the actions or `NULL`. Do not modify or free it or its contents.

### gupnp_service_introspection_list_actions ()

    const GList *       gupnp_service_introspection_list_actions
                                                            (GUPnPServiceIntrospection *introspection);

Returns a GList of all the actions (of type GUPnPServiceActionInfo) in this service.

`introspection` : | A GUPnPServiceIntrospection
Returns : | A GList of all the actions or `NULL`. Do not modify or free it or its contents. [element-type GUPnP.ServiceActionInfo][transfer none]

### gupnp_service_introspection_get_action ()

    const GUPnPServiceActionInfo * gupnp_service_introspection_get_action
                                                            (GUPnPServiceIntrospection *introspection,
                                                             const gchar *action_name);

Returns the action by the name `action_name` in this service.

`introspection` : | A GUPnPServiceIntrospection
`action_name` : | The name of the action to retreive
Returns : | the action or `NULL`. Do not modify or free it. [transfer none]

### gupnp_service_introspection_list_state_variable_names ()

    const GList *       gupnp_service_introspection_list_state_variable_names
                                                            (GUPnPServiceIntrospection *introspection);

Returns a GList of names of all the state variables in this service.

`introspection` : | A GUPnPServiceIntrospection
Returns : | A GList of names of all the state variables or `NULL`. Do not modify or free it or its contents. [element-type utf8][transfer none]

### gupnp_service_introspection_list_state_variables ()

    const GList *       gupnp_service_introspection_list_state_variables
                                                            (GUPnPServiceIntrospection *introspection);

Returns a GList of all the state variables (of type GUPnPServiceStateVariableInfo) in this service.

`introspection` : | A GUPnPServiceIntrospection
Returns : | A GList of all the state variables or `NULL`. Do not modify or free it or its contents. [element-type GUPnP.ServiceStateVariableInfo][transfer none]

### gupnp_service_introspection_get_state_variable ()

    const GUPnPServiceStateVariableInfo * gupnp_service_introspection_get_state_variable
                                                            (GUPnPServiceIntrospection *introspection,
                                                             const gchar *variable_name);

Returns the state variable by the name `variable_name` in this service.

`introspection` : | A GUPnPServiceIntrospection
`variable_name` : | The name of the variable to retreive
Returns : | the state variable or `NULL`. Do not modify or free it. [transfer none]

## Property Details

### The `"scpd"` property

      "scpd"                     gpointer              : Write / Construct Only

The scpd of the device description file.