## GckEnumerator GckEnumerator — Enumerates through PKCS#11 objects. |

## Functions

GckObject * | gck_enumerator_next ()
void | gck_enumerator_next_async ()
GList * | gck_enumerator_next_finish ()
GList * | gck_enumerator_next_n ()
GTlsInteraction * | gck_enumerator_get_interaction ()
void | gck_enumerator_set_interaction ()
GType | gck_enumerator_get_object_type ()
void | gck_enumerator_set_object_type ()
void | gck_enumerator_set_object_type_full ()
GckEnumerator * | gck_enumerator_get_chained ()
void | gck_enumerator_set_chained ()

## Properties

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

## Types and Values

struct | GckEnumerator

## Object Hierarchy

        GObject
        ╰── GckEnumerator

## 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.

## Functions

### 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.

#### Parameters

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.

#### Parameters

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.

#### Parameters

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.

#### Parameters

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

#### Parameters

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

#### Parameters

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.

#### Parameters

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);

### gck_enumerator_set_object_type_full ()

    void
    gck_enumerator_set_object_type_full (GckEnumerator *self,
                                         GType object_type,
                                         const gulong *attr_types,
                                         gint attr_count);

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

If `attr_types` and `attr_count` are non-NULL and non-zero respectively, then the GckObjectCache interface is expected to be implemented on the derived class, then the enumerator will retrieve attributes for each object.

#### Parameters

self | an enumerator |
object_type | the type of objects to create |
attr_types | types of attributes to retrieve for objects. | [array length=attr_count]
attr_count | the number of attributes to retrieve |

### 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.

#### Parameters

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);

Set a chained enumerator that will be run after all objects from this one are seen.

#### Parameters

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

## Types and Values

### struct GckEnumerator

    struct GckEnumerator;

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

## Property Details

### The `“chained”` property

      “chained”                  GckEnumerator *

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

Flags: Read / Write

### The `“interaction”` property

      “interaction”              GTlsInteraction *

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`

Flags: Read / Write

### The `“object-type”` property

      “object-type”              GType *

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

Flags: Read / Write

Allowed values: GckObject