## GckEnumerator

GckEnumerator — Enumerates through PKCS#11 objects.

## Synopsis

    struct              GckEnumerator;
    GckObject *         gck_enumerator_next                 (GckEnumerator *self,
                                                             GCancellable *cancellable,
                                                             GError **error);
    void                gck_enumerator_next_async           (GckEnumerator *self,
                                                             gint max_objects,
                                                             GCancellable *cancellable,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);
    GList *             gck_enumerator_next_finish          (GckEnumerator *self,
                                                             GAsyncResult *result,
                                                             GError **error);
    GList *             gck_enumerator_next_n               (GckEnumerator *self,
                                                             gint max_objects,
                                                             GCancellable *cancellable,
                                                             GError **error);
    GTlsInteraction *   gck_enumerator_get_interaction      (GckEnumerator *self);
    void                gck_enumerator_set_interaction      (GckEnumerator *self,
                                                             GTlsInteraction *interaction);
    GType               gck_enumerator_get_object_type      (GckEnumerator *self);
    void                gck_enumerator_set_object_type      (GckEnumerator *self,
                                                             GType object_type);
    GckEnumerator *     gck_enumerator_get_chained          (GckEnumerator *self);
    void                gck_enumerator_set_chained          (GckEnumerator *self,
                                                             GckEnumerator *chained);

## Object Hierarchy

      GObject
       +----GckEnumerator

## Properties

      "chained"                  GckEnumerator*        : Read / Write
      "interaction"              GTlsInteraction*      : Read / Write
      "object-type"              GType*                : Read / Write

## Description

A GckEnumerator can be used to enumerate through PKCS#11 objects. It will automatically create sessions as necessary.

Use `gck_modules_enumerate_objects()` or `gck_modules_enumerate_uri()` to create an enumerator. To get the objects use `gck_enumerator_next()` or `gck_enumerator_next_async()` functions.

## Details

### struct GckEnumerator

    struct GckEnumerator;

An object that allows enumerating of objects across modules, tokens.

### gck_enumerator_next ()

    GckObject *         gck_enumerator_next                 (GckEnumerator *self,
                                                             GCancellable *cancellable,
                                                             GError **error);

Get the next object in the enumerator, or `NULL` if there are no more objects.

`NULL` is also returned if the function fails. Use the `error` to determine whether a failure occurred or not.

`self` : | The enumerator
`cancellable` : | A GCancellable or `NULL`
`error` : | A location to store an error on failure
Returns : | The next object, which must be released using g_object_unref, or `NULL`. [transfer full][allow-none]

### gck_enumerator_next_async ()

    void                gck_enumerator_next_async           (GckEnumerator *self,
                                                             gint max_objects,
                                                             GCancellable *cancellable,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);

Get the next set of objects from the enumerator. This operation completes asynchronously.The maximum number of objects can be specified with `max_objects`. If -1 is specified, then all the remaining objects will be enumerated.

`self` : | An enumerator
`max_objects` : | The maximum number of objects to get
`cancellable` : | A GCancellable or `NULL`
`callback` : | Called when the result is ready
`user_data` : | Data to pass to the callback

### gck_enumerator_next_finish ()

    GList *             gck_enumerator_next_finish          (GckEnumerator *self,
                                                             GAsyncResult *result,
                                                             GError **error);

Complete an operation to enumerate next objects.

`NULL` is also returned if the function fails. Use the `error` to determine whether a failure occurred or not.

`self` : | An enumerator
`result` : | The result passed to the callback
`error` : | A location to raise an error on failure.
Returns : | The list of objects, which should be freed with `gck_list_unref_free()`. [element-type Gck.Module][transfer full]

### gck_enumerator_next_n ()

    GList *             gck_enumerator_next_n               (GckEnumerator *self,
                                                             gint max_objects,
                                                             GCancellable *cancellable,
                                                             GError **error);

Get the next set of objects from the enumerator. The maximum number of objects can be specified with `max_objects`. If -1 is specified, then all the remaining objects will be returned.

`NULL` is also returned if the function fails. Use the `error` to determine whether a failure occurred or not.

`self` : | An enumerator
`max_objects` : | The maximum amount of objects to enumerate
`cancellable` : | A GCancellable or `NULL`
`error` : | A location to store an error on failure
Returns : | A list of objects, which should be freed using `gck_list_unref_free()`. [transfer full][element-type Gck.Object]

### gck_enumerator_get_interaction ()

    GTlsInteraction *   gck_enumerator_get_interaction      (GckEnumerator *self);

Get the interaction used when a pin is needed

`self` : | the enumerator
Returns : | the interaction or `NULL`. [transfer full][allow-none]

### gck_enumerator_set_interaction ()

    void                gck_enumerator_set_interaction      (GckEnumerator *self,
                                                             GTlsInteraction *interaction);

Set the interaction used when a pin is needed

`self` : | the enumerator
`interaction` : | the interaction or `NULL`. [allow-none]

### gck_enumerator_get_object_type ()

    GType               gck_enumerator_get_object_type      (GckEnumerator *self);

Get the type of objects created by this enumerator. The type will always either be GckObject or derived from it.

`self` : | an enumerator
Returns : | the type of objects created. [transfer none]

### gck_enumerator_set_object_type ()

    void                gck_enumerator_set_object_type      (GckEnumerator *self,
                                                             GType object_type);

Set the type of objects to be created by this enumerator. The type must always be either GckObject or derived from it.

If the GckObjectAttributes interface is implemented on the derived class and the attribute_types field is set, then the enumerator will retrieve attributes for each object.

`self` : | an enumerator
`object_type` : | the type of objects to create

### gck_enumerator_get_chained ()

    GckEnumerator *     gck_enumerator_get_chained          (GckEnumerator *self);

Get the enumerator that will be run after all objects from this one are seen.

`self` : | the enumerator
Returns : | the chained enumerator or `NULL`. [transfer full][allow-none]

### gck_enumerator_set_chained ()

    void                gck_enumerator_set_chained          (GckEnumerator *self,
                                                             GckEnumerator *chained);

## Property Details

### The `"chained"` property

      "chained"                  GckEnumerator*        : Read / Write

Chained enumerator, which will be enumerated when this enumerator has enumerated all its objects.

### The `"interaction"` property

      "interaction"              GTlsInteraction*      : Read / Write

Interaction object used to ask the user for pins when opening sessions. Used if the session_options of the enumerator have `GCK_SESSION_LOGIN_USER`

### The `"object-type"` property

      "object-type"              GType*                : Read / Write

The type of objects that are created by the enumerator. Must be GckObject or derived from it.

Allowed values: GckObject