### Class

# Gio SocketAddressEnumerator

since: 2.0

#### Description

    abstract class Gio.SocketAddressEnumerator : GObject.Object
    {
      /* No available fields */
    }

`GSocketAddressEnumerator` is an enumerator type for `GSocketAddress` instances. It is returned by enumeration functions such as `g_socket_connectable_enumerate()`, which returns a `GSocketAddressEnumerator` to list each `GSocketAddress` which could be used to connect to that `GSocketConnectable`.

Enumeration is typically a blocking operation, so the asynchronous methods `g_socket_address_enumerator_next_async()` and `g_socket_address_enumerator_next_finish()` should be used where possible.

Each `GSocketAddressEnumerator` can only be enumerated once. Once `g_socket_address_enumerator_next()` has returned `NULL`, further enumeration with that `GSocketAddressEnumerator` is not possible, and it can be unreffed.

Available since: 2.0

#### Ancestors

- GObject

#### Descendants

- GProxyAddressEnumerator

#### Instance methods

###### g_socket_address_enumerator_next

Retrieves the next `GSocketAddress` from `enumerator`. Note that this may block for some amount of time. (Eg, a `GNetworkAddress` may need to do a DNS lookup before it can return an address.) Use `g_socket_address_enumerator_next_async()` if you need to avoid blocking.

since: 2.0

###### g_socket_address_enumerator_next_async

Asynchronously retrieves the next `GSocketAddress` from `enumerator` and then calls `callback`, which must call `g_socket_address_enumerator_next_finish()` to get the result.

since: 2.0

###### g_socket_address_enumerator_next_finish

Retrieves the result of a completed call to g_socket_address_enumerator_next_async(). See `g_socket_address_enumerator_next()` for more information about error handling.

since: 2.0

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

#### Signals

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

since: 2.0

#### Class structure

    struct GioSocketAddressEnumeratorClass {
      GSocketAddress* (* next) (
        GSocketAddressEnumerator* enumerator,
        GCancellable* cancellable,
        GError** error
      );
      void (* next_async) (
        GSocketAddressEnumerator* enumerator,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      );
      GSocketAddress* (* next_finish) (
        GSocketAddressEnumerator* enumerator,
        GAsyncResult* result,
        GError** error
      );

    }

Class structure for `GSocketAddressEnumerator`.

###### Class members

`next: GSocketAddress* (* next) ( GSocketAddressEnumerator* enumerator, GCancellable* cancellable, GError** error )`

  Virtual method for g_socket_address_enumerator_next().

`next_async: void (* next_async) ( GSocketAddressEnumerator* enumerator, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer user_data )`

  Virtual method for g_socket_address_enumerator_next_async().

`next_finish: GSocketAddress* (* next_finish) ( GSocketAddressEnumerator* enumerator, GAsyncResult* result, GError** error )`

  Virtual method for g_socket_address_enumerator_next_finish().

#### Virtual methods

###### Gio.SocketAddressEnumeratorClass.next

Retrieves the next `GSocketAddress` from `enumerator`. Note that this may block for some amount of time. (Eg, a `GNetworkAddress` may need to do a DNS lookup before it can return an address.) Use `g_socket_address_enumerator_next_async()` if you need to avoid blocking.

since: 2.0

###### Gio.SocketAddressEnumeratorClass.next_async

Asynchronously retrieves the next `GSocketAddress` from `enumerator` and then calls `callback`, which must call `g_socket_address_enumerator_next_finish()` to get the result.

since: 2.0

###### Gio.SocketAddressEnumeratorClass.next_finish

Retrieves the result of a completed call to g_socket_address_enumerator_next_async(). See `g_socket_address_enumerator_next()` for more information about error handling.

since: 2.0