gio.socket_connectable_mixin

Module for [SocketConnectable] interface mixin

Templates 2

tmplSocketConnectableT()

Objects that describe one or more potential socket endpoints implement [gio.socket_connectable.SocketConnectable]. Callers can then use [gio.socket_connectable.SocketConnectable.enumerate] to get a [gio.socket_address_enumerator.SocketAddressEnumerator] to try out each socket address in turn until one succeeds, as shown in the sample code below.

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

Functions

Creates a #GSocketAddressEnumerator for connectable.

Returns

a new #GSocketAddressEnumerator.

Creates a #GSocketAddressEnumerator for connectable that will return a #GProxyAddress for each of its addresses that you must connect to via a proxy.

If connectable does not implement [gio.socket_connectable.SocketConnectable.proxyEnumerate], this will fall back to calling [gio.socket_connectable.SocketConnectable.enumerate].

Returns

a new #GSocketAddressEnumerator.
string toString_()

Format a #GSocketConnectable 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 #GSocketConnectable implementation does not support string formatting, the implementation’s type name will be returned as a fallback.

Returns

the formatted string
tmplSocketConnectableGidBuilderT()