Copyright | Will Thompson and Iñaki García Etxebarria |
---|---|
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 GSocketConnectable
. 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 # | |
GObject SocketConnectable Source # | |
Defined in GI.Gio.Interfaces.SocketConnectable | |
ManagedPtrNewtype SocketConnectable Source # | |
TypedObject SocketConnectable Source # | |
Defined in GI.Gio.Interfaces.SocketConnectable | |
HasParentTypes SocketConnectable Source # | |
Defined in GI.Gio.Interfaces.SocketConnectable | |
IsGValue (Maybe SocketConnectable) Source # | Convert |
Defined in GI.Gio.Interfaces.SocketConnectable gvalueGType_ :: IO GType # gvalueSet_ :: Ptr GValue -> Maybe SocketConnectable -> IO () # gvalueGet_ :: Ptr GValue -> IO (Maybe SocketConnectable) # | |
type ParentTypes SocketConnectable Source # | |
Defined in GI.Gio.Interfaces.SocketConnectable type ParentTypes SocketConnectable = '[Object] |
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
Click to display all available methods, including inherited ones
Methods
bindProperty, bindPropertyFull, enumerate, forceFloating, freezeNotify, getv, isFloating, notify, notifyByPspec, proxyEnumerate, ref, refSink, runDispose, stealData, stealQdata, thawNotify, toString, unref, watchClosure.
Getters
getData, getProperty, getQdata.
Setters
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