| Copyright | Will Thompson, Iñaki García Etxebarria and Jonas Platte |
|---|---|
| License | LGPL-2.1 |
| Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
| Safe Haskell | None |
| Language | Haskell2010 |
GI.Gio.Interfaces.SocketConnectable
Description
Objects that describe one or more potential socket endpoints
implement SocketConnectable. Callers can then use
socketConnectableEnumerate to get a SocketAddressEnumerator
to try out each socket address in turn until one succeeds, as shown
in the sample code below.
C code
MyConnectionType *
connect_to_host (const char *hostname,
guint16 port,
GCancellable *cancellable,
GError **error)
{
MyConnection *conn = NULL;
GSocketConnectable *addr;
GSocketAddressEnumerator *enumerator;
GSocketAddress *sockaddr;
GError *conn_error = NULL;
addr = g_network_address_new (hostname, port);
enumerator = g_socket_connectable_enumerate (addr);
g_object_unref (addr);
// Try each sockaddr until we succeed. Record the first connection error,
// but not any further ones (since they'll probably be basically the same
// as the first).
while (!conn && (sockaddr = g_socket_address_enumerator_next (enumerator, cancellable, error))
{
conn = connect_to_sockaddr (sockaddr, conn_error ? NULL : &conn_error);
g_object_unref (sockaddr);
}
g_object_unref (enumerator);
if (conn)
{
if (conn_error)
{
// We couldn't connect to the first address, but we succeeded
// in connecting to a later address.
g_error_free (conn_error);
}
return conn;
}
else if (error)
{
/// Either initial lookup failed, or else the caller cancelled us.
if (conn_error)
g_error_free (conn_error);
return NULL;
}
else
{
g_error_propagate (error, conn_error);
return NULL;
}
}- newtype SocketConnectable = SocketConnectable (ManagedPtr SocketConnectable)
- noSocketConnectable :: Maybe SocketConnectable
- class GObject o => IsSocketConnectable o
- toSocketConnectable :: IsSocketConnectable o => o -> IO SocketConnectable
- data SocketConnectableEnumerateMethodInfo
- socketConnectableEnumerate :: (HasCallStack, MonadIO m, IsSocketConnectable a) => a -> m SocketAddressEnumerator
- data SocketConnectableProxyEnumerateMethodInfo
- socketConnectableProxyEnumerate :: (HasCallStack, MonadIO m, IsSocketConnectable a) => a -> m SocketAddressEnumerator
- data SocketConnectableToStringMethodInfo
- socketConnectableToString :: (HasCallStack, MonadIO m, IsSocketConnectable a) => a -> m Text
Exported types
newtype SocketConnectable Source #
Constructors
| SocketConnectable (ManagedPtr SocketConnectable) |
Instances
| GObject SocketConnectable Source # | |
| IsObject SocketConnectable Source # | |
| IsSocketConnectable SocketConnectable Source # | |
| ((~) * info (ResolveSocketConnectableMethod t SocketConnectable), MethodInfo * info SocketConnectable p) => IsLabel t (SocketConnectable -> p) Source # | |
| ((~) * info (ResolveSocketConnectableMethod t SocketConnectable), MethodInfo * info SocketConnectable p) => IsLabelProxy t (SocketConnectable -> p) Source # | |
| HasAttributeList * SocketConnectable Source # | |
| type AttributeList SocketConnectable Source # | |
| type SignalList SocketConnectable Source # | |
class GObject o => IsSocketConnectable o Source #
Instances
toSocketConnectable :: IsSocketConnectable o => o -> IO SocketConnectable Source #
Methods
enumerate
data SocketConnectableEnumerateMethodInfo Source #
Instances
| ((~) * signature (m SocketAddressEnumerator), MonadIO m, IsSocketConnectable a) => MethodInfo * SocketConnectableEnumerateMethodInfo a signature Source # | |
socketConnectableEnumerate Source #
Arguments
| :: (HasCallStack, MonadIO m, IsSocketConnectable a) | |
| => a |
|
| -> m SocketAddressEnumerator | Returns: a new |
Creates a SocketAddressEnumerator for connectable.
Since: 2.22
proxyEnumerate
data SocketConnectableProxyEnumerateMethodInfo Source #
Instances
| ((~) * signature (m SocketAddressEnumerator), MonadIO m, IsSocketConnectable a) => MethodInfo * SocketConnectableProxyEnumerateMethodInfo a signature Source # | |
socketConnectableProxyEnumerate Source #
Arguments
| :: (HasCallStack, MonadIO m, IsSocketConnectable a) | |
| => a |
|
| -> m SocketAddressEnumerator | Returns: a new |
Creates a SocketAddressEnumerator for connectable that will
return GProxyAddresses for addresses that you must connect
to via a proxy.
If connectable does not implement
socketConnectableProxyEnumerate, this will fall back to
calling socketConnectableEnumerate.
Since: 2.26
toString
data SocketConnectableToStringMethodInfo Source #
Instances
| ((~) * signature (m Text), MonadIO m, IsSocketConnectable a) => MethodInfo * SocketConnectableToStringMethodInfo a signature Source # | |
socketConnectableToString Source #
Arguments
| :: (HasCallStack, MonadIO m, IsSocketConnectable a) | |
| => a |
|
| -> m Text | Returns: the formatted string |
Format a SocketConnectable as a string. This is a human-readable format for
use in debugging output, and is not a stable serialization format. It is not
suitable for use in user interfaces as it exposes too much information for a
user.
If the SocketConnectable implementation does not support string formatting,
the implementation’s type name will be returned as a fallback.
Since: 2.48