Copyright | Will Thompson and Iñaki García Etxebarria |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria |
Safe Haskell | None |
Language | Haskell2010 |
GI.Gio.Interfaces.NetworkMonitor
Description
GNetworkMonitor
provides an easy-to-use cross-platform API
for monitoring network connectivity. On Linux, the available
implementations are based on the kernel's netlink interface and
on NetworkManager.
There is also an implementation for use inside Flatpak sandboxes.
Since: 2.32
Synopsis
- newtype NetworkMonitor = NetworkMonitor (ManagedPtr NetworkMonitor)
- class (GObject o, IsDescendantOf NetworkMonitor o) => IsNetworkMonitor o
- toNetworkMonitor :: (MonadIO m, IsNetworkMonitor o) => o -> m NetworkMonitor
- type family ResolveNetworkMonitorMethod (t :: Symbol) o where ...
- data NetworkMonitorCanReachMethodInfo
- networkMonitorCanReach :: (HasCallStack, MonadIO m, IsNetworkMonitor a, IsSocketConnectable b, IsCancellable c) => a -> b -> Maybe c -> m ()
- data NetworkMonitorCanReachAsyncMethodInfo
- networkMonitorCanReachAsync :: (HasCallStack, MonadIO m, IsNetworkMonitor a, IsSocketConnectable b, IsCancellable c) => a -> b -> Maybe c -> Maybe AsyncReadyCallback -> m ()
- data NetworkMonitorCanReachFinishMethodInfo
- networkMonitorCanReachFinish :: (HasCallStack, MonadIO m, IsNetworkMonitor a, IsAsyncResult b) => a -> b -> m ()
- data NetworkMonitorGetConnectivityMethodInfo
- networkMonitorGetConnectivity :: (HasCallStack, MonadIO m, IsNetworkMonitor a) => a -> m NetworkConnectivity
- networkMonitorGetDefault :: (HasCallStack, MonadIO m) => m NetworkMonitor
- data NetworkMonitorGetNetworkAvailableMethodInfo
- networkMonitorGetNetworkAvailable :: (HasCallStack, MonadIO m, IsNetworkMonitor a) => a -> m Bool
- data NetworkMonitorGetNetworkMeteredMethodInfo
- networkMonitorGetNetworkMetered :: (HasCallStack, MonadIO m, IsNetworkMonitor a) => a -> m Bool
- data NetworkMonitorConnectivityPropertyInfo
- getNetworkMonitorConnectivity :: (MonadIO m, IsNetworkMonitor o) => o -> m NetworkConnectivity
- networkMonitorConnectivity :: AttrLabelProxy "connectivity"
- data NetworkMonitorNetworkAvailablePropertyInfo
- getNetworkMonitorNetworkAvailable :: (MonadIO m, IsNetworkMonitor o) => o -> m Bool
- networkMonitorNetworkAvailable :: AttrLabelProxy "networkAvailable"
- data NetworkMonitorNetworkMeteredPropertyInfo
- getNetworkMonitorNetworkMetered :: (MonadIO m, IsNetworkMonitor o) => o -> m Bool
- networkMonitorNetworkMetered :: AttrLabelProxy "networkMetered"
- type NetworkMonitorNetworkChangedCallback = Bool -> IO ()
- data NetworkMonitorNetworkChangedSignalInfo
- afterNetworkMonitorNetworkChanged :: (IsNetworkMonitor a, MonadIO m) => a -> ((?self :: a) => NetworkMonitorNetworkChangedCallback) -> m SignalHandlerId
- onNetworkMonitorNetworkChanged :: (IsNetworkMonitor a, MonadIO m) => a -> ((?self :: a) => NetworkMonitorNetworkChangedCallback) -> m SignalHandlerId
Exported types
newtype NetworkMonitor Source #
Memory-managed wrapper type.
Constructors
NetworkMonitor (ManagedPtr NetworkMonitor) |
Instances
class (GObject o, IsDescendantOf NetworkMonitor o) => IsNetworkMonitor o Source #
Type class for types which can be safely cast to NetworkMonitor
, for instance with toNetworkMonitor
.
Instances
(GObject o, IsDescendantOf NetworkMonitor o) => IsNetworkMonitor o Source # | |
Defined in GI.Gio.Interfaces.NetworkMonitor |
toNetworkMonitor :: (MonadIO m, IsNetworkMonitor o) => o -> m NetworkMonitor Source #
Cast to NetworkMonitor
, 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, canReach, canReachAsync, canReachFinish, forceFloating, freezeNotify, getv, init, isFloating, notify, notifyByPspec, ref, refSink, runDispose, stealData, stealQdata, thawNotify, unref, watchClosure.
Getters
getConnectivity, getData, getNetworkAvailable, getNetworkMetered, getProperty, getQdata.
Setters
type family ResolveNetworkMonitorMethod (t :: Symbol) o where ... Source #
Equations
canReach
data NetworkMonitorCanReachMethodInfo Source #
Instances
(signature ~ (b -> Maybe c -> m ()), MonadIO m, IsNetworkMonitor a, IsSocketConnectable b, IsCancellable c) => OverloadedMethod NetworkMonitorCanReachMethodInfo a signature Source # | |
Defined in GI.Gio.Interfaces.NetworkMonitor Methods overloadedMethod :: a -> signature # | |
OverloadedMethodInfo NetworkMonitorCanReachMethodInfo (a :: Type) Source # | |
Defined in GI.Gio.Interfaces.NetworkMonitor Methods |
networkMonitorCanReach Source #
Arguments
:: (HasCallStack, MonadIO m, IsNetworkMonitor a, IsSocketConnectable b, IsCancellable c) | |
=> a |
|
-> b |
|
-> Maybe c |
|
-> m () | (Can throw |
Attempts to determine whether or not the host pointed to by
connectable
can be reached, without actually trying to connect to
it.
This may return True
even when NetworkMonitor:networkAvailable
is False
, if, for example, monitor
can determine that
connectable
refers to a host on a local network.
If monitor
believes that an attempt to connect to connectable
will succeed, it will return True
. Otherwise, it will return
False
and set error
to an appropriate error (such as
IOErrorEnumHostUnreachable
).
Note that although this does not attempt to connect to
connectable
, it may still block for a brief period of time (eg,
trying to do multicast DNS on the local network), so if you do not
want to block, you should use networkMonitorCanReachAsync
.
Since: 2.32
canReachAsync
data NetworkMonitorCanReachAsyncMethodInfo Source #
Instances
(signature ~ (b -> Maybe c -> Maybe AsyncReadyCallback -> m ()), MonadIO m, IsNetworkMonitor a, IsSocketConnectable b, IsCancellable c) => OverloadedMethod NetworkMonitorCanReachAsyncMethodInfo a signature Source # | |
Defined in GI.Gio.Interfaces.NetworkMonitor Methods overloadedMethod :: a -> signature # | |
OverloadedMethodInfo NetworkMonitorCanReachAsyncMethodInfo (a :: Type) Source # | |
Defined in GI.Gio.Interfaces.NetworkMonitor Methods |
networkMonitorCanReachAsync Source #
Arguments
:: (HasCallStack, MonadIO m, IsNetworkMonitor a, IsSocketConnectable b, IsCancellable c) | |
=> a |
|
-> b |
|
-> Maybe c |
|
-> Maybe AsyncReadyCallback |
|
-> m () |
Asynchronously attempts to determine whether or not the host
pointed to by connectable
can be reached, without actually
trying to connect to it.
For more details, see networkMonitorCanReach
.
When the operation is finished, callback
will be called.
You can then call networkMonitorCanReachFinish
to get the result of the operation.
canReachFinish
data NetworkMonitorCanReachFinishMethodInfo Source #
Instances
(signature ~ (b -> m ()), MonadIO m, IsNetworkMonitor a, IsAsyncResult b) => OverloadedMethod NetworkMonitorCanReachFinishMethodInfo a signature Source # | |
Defined in GI.Gio.Interfaces.NetworkMonitor Methods overloadedMethod :: a -> signature # | |
OverloadedMethodInfo NetworkMonitorCanReachFinishMethodInfo (a :: Type) Source # | |
Defined in GI.Gio.Interfaces.NetworkMonitor Methods |
networkMonitorCanReachFinish Source #
Arguments
:: (HasCallStack, MonadIO m, IsNetworkMonitor a, IsAsyncResult b) | |
=> a |
|
-> b |
|
-> m () | (Can throw |
Finishes an async network connectivity test.
See networkMonitorCanReachAsync
.
getConnectivity
data NetworkMonitorGetConnectivityMethodInfo Source #
Instances
(signature ~ m NetworkConnectivity, MonadIO m, IsNetworkMonitor a) => OverloadedMethod NetworkMonitorGetConnectivityMethodInfo a signature Source # | |
Defined in GI.Gio.Interfaces.NetworkMonitor Methods overloadedMethod :: a -> signature # | |
OverloadedMethodInfo NetworkMonitorGetConnectivityMethodInfo (a :: Type) Source # | |
Defined in GI.Gio.Interfaces.NetworkMonitor Methods |
networkMonitorGetConnectivity Source #
Arguments
:: (HasCallStack, MonadIO m, IsNetworkMonitor a) | |
=> a |
|
-> m NetworkConnectivity | Returns: the network connectivity state |
Gets a more detailed networking state than
networkMonitorGetNetworkAvailable
.
If NetworkMonitor:networkAvailable is False
, then the
connectivity state will be NetworkConnectivityLocal
.
If NetworkMonitor:networkAvailable is True
, then the
connectivity state will be NetworkConnectivityFull
(if there
is full Internet connectivity), NetworkConnectivityLimited
(if
the host has a default route, but appears to be unable to actually
reach the full Internet), or NetworkConnectivityPortal
(if the
host is trapped behind a "captive portal" that requires some sort
of login or acknowledgement before allowing full Internet access).
Note that in the case of NetworkConnectivityLimited
and
NetworkConnectivityPortal
, it is possible that some sites are
reachable but others are not. In this case, applications can
attempt to connect to remote servers, but should gracefully fall
back to their "offline" behavior if the connection attempt fails.
Since: 2.44
getDefault
networkMonitorGetDefault Source #
Arguments
:: (HasCallStack, MonadIO m) | |
=> m NetworkMonitor | Returns: a |
Gets the default NetworkMonitor
for the system.
Since: 2.32
getNetworkAvailable
data NetworkMonitorGetNetworkAvailableMethodInfo Source #
Instances
(signature ~ m Bool, MonadIO m, IsNetworkMonitor a) => OverloadedMethod NetworkMonitorGetNetworkAvailableMethodInfo a signature Source # | |
Defined in GI.Gio.Interfaces.NetworkMonitor Methods overloadedMethod :: a -> signature # | |
OverloadedMethodInfo NetworkMonitorGetNetworkAvailableMethodInfo (a :: Type) Source # | |
Defined in GI.Gio.Interfaces.NetworkMonitor Methods |
networkMonitorGetNetworkAvailable Source #
Arguments
:: (HasCallStack, MonadIO m, IsNetworkMonitor a) | |
=> a |
|
-> m Bool | Returns: whether the network is available |
Checks if the network is available. "Available" here means that the system has a default route available for at least one of IPv4 or IPv6. It does not necessarily imply that the public Internet is reachable. See NetworkMonitor:networkAvailable for more details.
Since: 2.32
getNetworkMetered
data NetworkMonitorGetNetworkMeteredMethodInfo Source #
Instances
(signature ~ m Bool, MonadIO m, IsNetworkMonitor a) => OverloadedMethod NetworkMonitorGetNetworkMeteredMethodInfo a signature Source # | |
Defined in GI.Gio.Interfaces.NetworkMonitor Methods overloadedMethod :: a -> signature # | |
OverloadedMethodInfo NetworkMonitorGetNetworkMeteredMethodInfo (a :: Type) Source # | |
Defined in GI.Gio.Interfaces.NetworkMonitor Methods |
networkMonitorGetNetworkMetered Source #
Arguments
:: (HasCallStack, MonadIO m, IsNetworkMonitor a) | |
=> a |
|
-> m Bool | Returns: whether the connection is metered |
Checks if the network is metered. See NetworkMonitor:networkMetered for more details.
Since: 2.46
Properties
connectivity
More detailed information about the host's network connectivity.
See networkMonitorGetConnectivity
and
NetworkConnectivity
for more details.
Since: 2.44
data NetworkMonitorConnectivityPropertyInfo Source #
Instances
getNetworkMonitorConnectivity :: (MonadIO m, IsNetworkMonitor o) => o -> m NetworkConnectivity Source #
Get the value of the “connectivity
” property.
When overloading is enabled, this is equivalent to
get
networkMonitor #connectivity
networkMonitorConnectivity :: AttrLabelProxy "connectivity" Source #
networkAvailable
Whether the network is considered available. That is, whether the system has a default route for at least one of IPv4 or IPv6.
Real-world networks are of course much more complicated than
this; the machine may be connected to a wifi hotspot that
requires payment before allowing traffic through, or may be
connected to a functioning router that has lost its own upstream
connectivity. Some hosts might only be accessible when a VPN is
active. Other hosts might only be accessible when the VPN is
not active. Thus, it is best to use networkMonitorCanReach
or networkMonitorCanReachAsync
to test for reachability
on a host-by-host basis. (On the other hand, when the property is
False
, the application can reasonably expect that no remote
hosts at all are reachable, and should indicate this to the user
in its UI.)
See also NetworkMonitor::networkChanged.
Since: 2.32
data NetworkMonitorNetworkAvailablePropertyInfo Source #
Instances
AttrInfo NetworkMonitorNetworkAvailablePropertyInfo Source # | |||||||||||||||||||||||||||||||||
Defined in GI.Gio.Interfaces.NetworkMonitor Associated Types
Methods attrGet :: AttrBaseTypeConstraint NetworkMonitorNetworkAvailablePropertyInfo o => o -> IO (AttrGetType NetworkMonitorNetworkAvailablePropertyInfo) # attrSet :: (AttrBaseTypeConstraint NetworkMonitorNetworkAvailablePropertyInfo o, AttrSetTypeConstraint NetworkMonitorNetworkAvailablePropertyInfo b) => o -> b -> IO () # attrClear :: AttrBaseTypeConstraint NetworkMonitorNetworkAvailablePropertyInfo o => o -> IO () # attrConstruct :: (AttrBaseTypeConstraint NetworkMonitorNetworkAvailablePropertyInfo o, AttrSetTypeConstraint NetworkMonitorNetworkAvailablePropertyInfo b) => b -> IO (GValueConstruct o) # attrTransfer :: (AttrBaseTypeConstraint NetworkMonitorNetworkAvailablePropertyInfo o, AttrTransferTypeConstraint NetworkMonitorNetworkAvailablePropertyInfo b) => Proxy o -> b -> IO (AttrTransferType NetworkMonitorNetworkAvailablePropertyInfo) # | |||||||||||||||||||||||||||||||||
type AttrAllowedOps NetworkMonitorNetworkAvailablePropertyInfo Source # | |||||||||||||||||||||||||||||||||
Defined in GI.Gio.Interfaces.NetworkMonitor | |||||||||||||||||||||||||||||||||
type AttrBaseTypeConstraint NetworkMonitorNetworkAvailablePropertyInfo Source # | |||||||||||||||||||||||||||||||||
type AttrGetType NetworkMonitorNetworkAvailablePropertyInfo Source # | |||||||||||||||||||||||||||||||||
type AttrLabel NetworkMonitorNetworkAvailablePropertyInfo Source # | |||||||||||||||||||||||||||||||||
Defined in GI.Gio.Interfaces.NetworkMonitor | |||||||||||||||||||||||||||||||||
type AttrOrigin NetworkMonitorNetworkAvailablePropertyInfo Source # | |||||||||||||||||||||||||||||||||
type AttrSetTypeConstraint NetworkMonitorNetworkAvailablePropertyInfo Source # | |||||||||||||||||||||||||||||||||
Defined in GI.Gio.Interfaces.NetworkMonitor | |||||||||||||||||||||||||||||||||
type AttrTransferType NetworkMonitorNetworkAvailablePropertyInfo Source # | |||||||||||||||||||||||||||||||||
Defined in GI.Gio.Interfaces.NetworkMonitor | |||||||||||||||||||||||||||||||||
type AttrTransferTypeConstraint NetworkMonitorNetworkAvailablePropertyInfo Source # | |||||||||||||||||||||||||||||||||
getNetworkMonitorNetworkAvailable :: (MonadIO m, IsNetworkMonitor o) => o -> m Bool Source #
Get the value of the “network-available
” property.
When overloading is enabled, this is equivalent to
get
networkMonitor #networkAvailable
networkMonitorNetworkAvailable :: AttrLabelProxy "networkAvailable" Source #
networkMetered
Whether the network is considered metered.
That is, whether the system has traffic flowing through the default connection that is subject to limitations set by service providers. For example, traffic might be billed by the amount of data transmitted, or there might be a quota on the amount of traffic per month. This is typical with tethered connections (3G and 4G) and in such situations, bandwidth intensive applications may wish to avoid network activity where possible if it will cost the user money or use up their limited quota. Anything more than a few hundreds of kilobytes of data usage per hour should be avoided without asking permission from the user.
If more information is required about specific devices then the system network management API should be used instead (for example, NetworkManager or ConnMan).
If this information is not available then no networks will be marked as metered.
See also NetworkMonitor:networkAvailable.
Since: 2.46
data NetworkMonitorNetworkMeteredPropertyInfo Source #
Instances
AttrInfo NetworkMonitorNetworkMeteredPropertyInfo Source # | |||||||||||||||||||||||||||||||||
Defined in GI.Gio.Interfaces.NetworkMonitor Associated Types
Methods attrGet :: AttrBaseTypeConstraint NetworkMonitorNetworkMeteredPropertyInfo o => o -> IO (AttrGetType NetworkMonitorNetworkMeteredPropertyInfo) # attrSet :: (AttrBaseTypeConstraint NetworkMonitorNetworkMeteredPropertyInfo o, AttrSetTypeConstraint NetworkMonitorNetworkMeteredPropertyInfo b) => o -> b -> IO () # attrClear :: AttrBaseTypeConstraint NetworkMonitorNetworkMeteredPropertyInfo o => o -> IO () # attrConstruct :: (AttrBaseTypeConstraint NetworkMonitorNetworkMeteredPropertyInfo o, AttrSetTypeConstraint NetworkMonitorNetworkMeteredPropertyInfo b) => b -> IO (GValueConstruct o) # attrTransfer :: (AttrBaseTypeConstraint NetworkMonitorNetworkMeteredPropertyInfo o, AttrTransferTypeConstraint NetworkMonitorNetworkMeteredPropertyInfo b) => Proxy o -> b -> IO (AttrTransferType NetworkMonitorNetworkMeteredPropertyInfo) # | |||||||||||||||||||||||||||||||||
type AttrAllowedOps NetworkMonitorNetworkMeteredPropertyInfo Source # | |||||||||||||||||||||||||||||||||
Defined in GI.Gio.Interfaces.NetworkMonitor | |||||||||||||||||||||||||||||||||
type AttrBaseTypeConstraint NetworkMonitorNetworkMeteredPropertyInfo Source # | |||||||||||||||||||||||||||||||||
type AttrGetType NetworkMonitorNetworkMeteredPropertyInfo Source # | |||||||||||||||||||||||||||||||||
type AttrLabel NetworkMonitorNetworkMeteredPropertyInfo Source # | |||||||||||||||||||||||||||||||||
Defined in GI.Gio.Interfaces.NetworkMonitor | |||||||||||||||||||||||||||||||||
type AttrOrigin NetworkMonitorNetworkMeteredPropertyInfo Source # | |||||||||||||||||||||||||||||||||
type AttrSetTypeConstraint NetworkMonitorNetworkMeteredPropertyInfo Source # | |||||||||||||||||||||||||||||||||
Defined in GI.Gio.Interfaces.NetworkMonitor | |||||||||||||||||||||||||||||||||
type AttrTransferType NetworkMonitorNetworkMeteredPropertyInfo Source # | |||||||||||||||||||||||||||||||||
Defined in GI.Gio.Interfaces.NetworkMonitor | |||||||||||||||||||||||||||||||||
type AttrTransferTypeConstraint NetworkMonitorNetworkMeteredPropertyInfo Source # | |||||||||||||||||||||||||||||||||
getNetworkMonitorNetworkMetered :: (MonadIO m, IsNetworkMonitor o) => o -> m Bool Source #
Get the value of the “network-metered
” property.
When overloading is enabled, this is equivalent to
get
networkMonitor #networkMetered
networkMonitorNetworkMetered :: AttrLabelProxy "networkMetered" Source #
Signals
networkChanged
type NetworkMonitorNetworkChangedCallback Source #
Arguments
= Bool |
|
-> IO () |
Emitted when the network configuration changes.
Since: 2.32
data NetworkMonitorNetworkChangedSignalInfo Source #
Instances
SignalInfo NetworkMonitorNetworkChangedSignalInfo Source # | |||||
Defined in GI.Gio.Interfaces.NetworkMonitor Associated Types
Methods connectSignal :: GObject o => o -> (o -> HaskellCallbackType NetworkMonitorNetworkChangedSignalInfo) -> SignalConnectMode -> Maybe Text -> IO SignalHandlerId # | |||||
type HaskellCallbackType NetworkMonitorNetworkChangedSignalInfo Source # | |||||
afterNetworkMonitorNetworkChanged :: (IsNetworkMonitor a, MonadIO m) => a -> ((?self :: a) => NetworkMonitorNetworkChangedCallback) -> m SignalHandlerId Source #
Connect a signal handler for the networkChanged signal, to be run after the default handler. When overloading is enabled, this is equivalent to
after
networkMonitor #networkChanged callback
By default the object invoking the signal is not passed to the callback.
If you need to access it, you can use the implit ?self
parameter.
Note that this requires activating the ImplicitParams
GHC extension.
onNetworkMonitorNetworkChanged :: (IsNetworkMonitor a, MonadIO m) => a -> ((?self :: a) => NetworkMonitorNetworkChangedCallback) -> m SignalHandlerId Source #
Connect a signal handler for the networkChanged signal, to be run before the default handler. When overloading is enabled, this is equivalent to
on
networkMonitor #networkChanged callback