Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria |
Safe Haskell | None |
Language | Haskell2010 |
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; } }
Synopsis
- newtype SocketConnectable = SocketConnectable (ManagedPtr SocketConnectable)
- class (GObject o, IsDescendantOf SocketConnectable o) => IsSocketConnectable o
- toSocketConnectable :: (MonadIO m, IsSocketConnectable o) => o -> m SocketConnectable
- socketConnectableEnumerate :: (HasCallStack, MonadIO m, IsSocketConnectable a) => a -> m SocketAddressEnumerator
- socketConnectableProxyEnumerate :: (HasCallStack, MonadIO m, IsSocketConnectable a) => a -> m SocketAddressEnumerator
- socketConnectableToString :: (HasCallStack, MonadIO m, IsSocketConnectable a) => a -> m Text
Exported types
newtype SocketConnectable Source #
Memory-managed wrapper type.
Instances
Eq SocketConnectable Source # | |
Defined in GI.Gio.Interfaces.SocketConnectable (==) :: SocketConnectable -> SocketConnectable -> Bool # (/=) :: SocketConnectable -> SocketConnectable -> Bool # | |
IsGValue SocketConnectable Source # | Convert |
Defined in GI.Gio.Interfaces.SocketConnectable toGValue :: SocketConnectable -> IO GValue # fromGValue :: GValue -> IO SocketConnectable # | |
ManagedPtrNewtype SocketConnectable Source # | |
TypedObject SocketConnectable Source # | |
Defined in GI.Gio.Interfaces.SocketConnectable | |
GObject SocketConnectable Source # | |
Defined in GI.Gio.Interfaces.SocketConnectable | |
HasParentTypes SocketConnectable Source # | |
Defined in GI.Gio.Interfaces.SocketConnectable | |
type ParentTypes SocketConnectable Source # | |
Defined in GI.Gio.Interfaces.SocketConnectable |
class (GObject o, IsDescendantOf SocketConnectable o) => IsSocketConnectable o Source #
Type class for types which can be safely cast to SocketConnectable
, for instance with toSocketConnectable
.
Instances
(GObject o, IsDescendantOf SocketConnectable o) => IsSocketConnectable o Source # | |
Defined in GI.Gio.Interfaces.SocketConnectable |
toSocketConnectable :: (MonadIO m, IsSocketConnectable o) => o -> m SocketConnectable Source #
Cast to SocketConnectable
, for types for which this is known to be safe. For general casts, use castTo
.
Methods
Overloaded methods
enumerate
socketConnectableEnumerate Source #
:: (HasCallStack, MonadIO m, IsSocketConnectable a) | |
=> a |
|
-> m SocketAddressEnumerator | Returns: a new |
Creates a SocketAddressEnumerator
for connectable
.
Since: 2.22
proxyEnumerate
socketConnectableProxyEnumerate Source #
:: (HasCallStack, MonadIO m, IsSocketConnectable a) | |
=> a |
|
-> m SocketAddressEnumerator | Returns: a new |
Creates a SocketAddressEnumerator
for connectable
that will
return a ProxyAddress
for each of its 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
socketConnectableToString Source #
:: (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