gi-gio-2.0.25: Gio bindings
CopyrightWill Thompson Iñaki García Etxebarria and Jonas Platte
MaintainerIñaki García Etxebarria
Safe HaskellNone



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;
      g_error_propagate (error, conn_error);
      return NULL;

Exported types

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 details
(GObject o, IsDescendantOf SocketConnectable o) => IsSocketConnectable o Source # 
Instance details

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.


Overloaded methods



socketConnectableProxyEnumerate Source #

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


socketConnectableToString Source #


:: (HasCallStack, MonadIO m, IsSocketConnectable a) 
=> a

connectable: a SocketConnectable

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