gi-gio-2.0.29: Gio bindings
CopyrightWill Thompson and Iñaki García Etxebarria
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria
Safe HaskellSafe-Inferred
LanguageHaskell2010

GI.Gio.Objects.SocketAddressEnumerator

Description

SocketAddressEnumerator is an enumerator type for SocketAddress instances. It is returned by enumeration functions such as socketConnectableEnumerate, which returns a SocketAddressEnumerator to list each SocketAddress which could be used to connect to that SocketConnectable.

Enumeration is typically a blocking operation, so the asynchronous methods socketAddressEnumeratorNextAsync and socketAddressEnumeratorNextFinish should be used where possible.

Each SocketAddressEnumerator can only be enumerated once. Once socketAddressEnumeratorNext has returned Nothing, further enumeration with that SocketAddressEnumerator is not possible, and it can be unreffed.

Synopsis

Exported types

newtype SocketAddressEnumerator Source #

Memory-managed wrapper type.

class (GObject o, IsDescendantOf SocketAddressEnumerator o) => IsSocketAddressEnumerator o Source #

Type class for types which can be safely cast to SocketAddressEnumerator, for instance with toSocketAddressEnumerator.

toSocketAddressEnumerator :: (MonadIO m, IsSocketAddressEnumerator o) => o -> m SocketAddressEnumerator Source #

Cast to SocketAddressEnumerator, for types for which this is known to be safe. For general casts, use castTo.

Methods

next

socketAddressEnumeratorNext Source #

Arguments

:: (HasCallStack, MonadIO m, IsSocketAddressEnumerator a, IsCancellable b) 
=> a

enumerator: a SocketAddressEnumerator

-> Maybe b

cancellable: optional Cancellable object, Nothing to ignore.

-> m SocketAddress

Returns: a SocketAddress (owned by the caller), or Nothing on error (in which case *error will be set) or if there are no more addresses. (Can throw GError)

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

If enumerator is expected to yield addresses, but for some reason is unable to (eg, because of a DNS error), then the first call to socketAddressEnumeratorNext will return an appropriate error in *error. However, if the first call to socketAddressEnumeratorNext succeeds, then any further internal errors (other than cancellable being triggered) will be ignored.

nextAsync

socketAddressEnumeratorNextAsync Source #

Arguments

:: (HasCallStack, MonadIO m, IsSocketAddressEnumerator a, IsCancellable b) 
=> a

enumerator: a SocketAddressEnumerator

-> Maybe b

cancellable: optional Cancellable object, Nothing to ignore.

-> Maybe AsyncReadyCallback

callback: a AsyncReadyCallback to call when the request is satisfied

-> m () 

Asynchronously retrieves the next SocketAddress from enumerator and then calls callback, which must call socketAddressEnumeratorNextFinish to get the result.

It is an error to call this multiple times before the previous callback has finished.

nextFinish

socketAddressEnumeratorNextFinish Source #

Arguments

:: (HasCallStack, MonadIO m, IsSocketAddressEnumerator a, IsAsyncResult b) 
=> a

enumerator: a SocketAddressEnumerator

-> b

result: a AsyncResult

-> m SocketAddress

Returns: a SocketAddress (owned by the caller), or Nothing on error (in which case *error will be set) or if there are no more addresses. (Can throw GError)

Retrieves the result of a completed call to socketAddressEnumeratorNextAsync. See socketAddressEnumeratorNext for more information about error handling.