module GI.Gio.Interfaces.NetworkMonitor
(
NetworkMonitor(..) ,
noNetworkMonitor ,
NetworkMonitorK ,
toNetworkMonitor ,
networkMonitorCanReach ,
networkMonitorCanReachAsync ,
networkMonitorCanReachFinish ,
networkMonitorGetConnectivity ,
networkMonitorGetNetworkAvailable ,
NetworkMonitorConnectivityPropertyInfo ,
getNetworkMonitorConnectivity ,
NetworkMonitorNetworkAvailablePropertyInfo,
getNetworkMonitorNetworkAvailable ,
NetworkMonitorNetworkChangedCallback ,
NetworkMonitorNetworkChangedCallbackC ,
NetworkMonitorNetworkChangedSignalInfo ,
afterNetworkMonitorNetworkChanged ,
mkNetworkMonitorNetworkChangedCallback ,
networkMonitorNetworkChangedCallbackWrapper,
networkMonitorNetworkChangedClosure ,
noNetworkMonitorNetworkChangedCallback ,
onNetworkMonitorNetworkChanged ,
) where
import Prelude ()
import Data.GI.Base.ShortPrelude
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import GI.Gio.Types
import GI.Gio.Callbacks
import qualified GI.GObject as GObject
newtype NetworkMonitor = NetworkMonitor (ForeignPtr NetworkMonitor)
noNetworkMonitor :: Maybe NetworkMonitor
noNetworkMonitor = Nothing
type NetworkMonitorNetworkChangedCallback =
Bool ->
IO ()
noNetworkMonitorNetworkChangedCallback :: Maybe NetworkMonitorNetworkChangedCallback
noNetworkMonitorNetworkChangedCallback = Nothing
type NetworkMonitorNetworkChangedCallbackC =
Ptr () ->
CInt ->
Ptr () ->
IO ()
foreign import ccall "wrapper"
mkNetworkMonitorNetworkChangedCallback :: NetworkMonitorNetworkChangedCallbackC -> IO (FunPtr NetworkMonitorNetworkChangedCallbackC)
networkMonitorNetworkChangedClosure :: NetworkMonitorNetworkChangedCallback -> IO Closure
networkMonitorNetworkChangedClosure cb = newCClosure =<< mkNetworkMonitorNetworkChangedCallback wrapped
where wrapped = networkMonitorNetworkChangedCallbackWrapper cb
networkMonitorNetworkChangedCallbackWrapper ::
NetworkMonitorNetworkChangedCallback ->
Ptr () ->
CInt ->
Ptr () ->
IO ()
networkMonitorNetworkChangedCallbackWrapper _cb _ available _ = do
let available' = (/= 0) available
_cb available'
onNetworkMonitorNetworkChanged :: (GObject a, MonadIO m) => a -> NetworkMonitorNetworkChangedCallback -> m SignalHandlerId
onNetworkMonitorNetworkChanged obj cb = liftIO $ connectNetworkMonitorNetworkChanged obj cb SignalConnectBefore
afterNetworkMonitorNetworkChanged :: (GObject a, MonadIO m) => a -> NetworkMonitorNetworkChangedCallback -> m SignalHandlerId
afterNetworkMonitorNetworkChanged obj cb = connectNetworkMonitorNetworkChanged obj cb SignalConnectAfter
connectNetworkMonitorNetworkChanged :: (GObject a, MonadIO m) =>
a -> NetworkMonitorNetworkChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectNetworkMonitorNetworkChanged obj cb after = liftIO $ do
cb' <- mkNetworkMonitorNetworkChangedCallback (networkMonitorNetworkChangedCallbackWrapper cb)
connectSignalFunPtr obj "network-changed" cb' after
getNetworkMonitorConnectivity :: (MonadIO m, NetworkMonitorK o) => o -> m NetworkConnectivity
getNetworkMonitorConnectivity obj = liftIO $ getObjectPropertyEnum obj "connectivity"
data NetworkMonitorConnectivityPropertyInfo
instance AttrInfo NetworkMonitorConnectivityPropertyInfo where
type AttrAllowedOps NetworkMonitorConnectivityPropertyInfo = '[ 'AttrGet]
type AttrSetTypeConstraint NetworkMonitorConnectivityPropertyInfo = (~) ()
type AttrBaseTypeConstraint NetworkMonitorConnectivityPropertyInfo = NetworkMonitorK
type AttrGetType NetworkMonitorConnectivityPropertyInfo = NetworkConnectivity
type AttrLabel NetworkMonitorConnectivityPropertyInfo = "NetworkMonitor::connectivity"
attrGet _ = getNetworkMonitorConnectivity
attrSet _ = undefined
attrConstruct _ = undefined
getNetworkMonitorNetworkAvailable :: (MonadIO m, NetworkMonitorK o) => o -> m Bool
getNetworkMonitorNetworkAvailable obj = liftIO $ getObjectPropertyBool obj "network-available"
data NetworkMonitorNetworkAvailablePropertyInfo
instance AttrInfo NetworkMonitorNetworkAvailablePropertyInfo where
type AttrAllowedOps NetworkMonitorNetworkAvailablePropertyInfo = '[ 'AttrGet]
type AttrSetTypeConstraint NetworkMonitorNetworkAvailablePropertyInfo = (~) ()
type AttrBaseTypeConstraint NetworkMonitorNetworkAvailablePropertyInfo = NetworkMonitorK
type AttrGetType NetworkMonitorNetworkAvailablePropertyInfo = Bool
type AttrLabel NetworkMonitorNetworkAvailablePropertyInfo = "NetworkMonitor::network-available"
attrGet _ = getNetworkMonitorNetworkAvailable
attrSet _ = undefined
attrConstruct _ = undefined
type instance AttributeList NetworkMonitor = NetworkMonitorAttributeList
type NetworkMonitorAttributeList = ('[ '("connectivity", NetworkMonitorConnectivityPropertyInfo), '("network-available", NetworkMonitorNetworkAvailablePropertyInfo)] :: [(Symbol, *)])
data NetworkMonitorNetworkChangedSignalInfo
instance SignalInfo NetworkMonitorNetworkChangedSignalInfo where
type HaskellCallbackType NetworkMonitorNetworkChangedSignalInfo = NetworkMonitorNetworkChangedCallback
connectSignal _ = connectNetworkMonitorNetworkChanged
type instance SignalList NetworkMonitor = NetworkMonitorSignalList
type NetworkMonitorSignalList = ('[ '("network-changed", NetworkMonitorNetworkChangedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
foreign import ccall "g_network_monitor_get_type"
c_g_network_monitor_get_type :: IO GType
type instance ParentTypes NetworkMonitor = NetworkMonitorParentTypes
type NetworkMonitorParentTypes = '[Initable, GObject.Object]
instance GObject NetworkMonitor where
gobjectIsInitiallyUnowned _ = False
gobjectType _ = c_g_network_monitor_get_type
class GObject o => NetworkMonitorK o
instance (GObject o, IsDescendantOf NetworkMonitor o) => NetworkMonitorK o
toNetworkMonitor :: NetworkMonitorK o => o -> IO NetworkMonitor
toNetworkMonitor = unsafeCastTo NetworkMonitor
foreign import ccall "g_network_monitor_can_reach" g_network_monitor_can_reach ::
Ptr NetworkMonitor ->
Ptr SocketConnectable ->
Ptr Cancellable ->
Ptr (Ptr GError) ->
IO CInt
networkMonitorCanReach ::
(MonadIO m, NetworkMonitorK a, SocketConnectableK b, CancellableK c) =>
a ->
b ->
Maybe (c) ->
m ()
networkMonitorCanReach _obj connectable cancellable = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
let connectable' = unsafeManagedPtrCastPtr connectable
maybeCancellable <- case cancellable of
Nothing -> return nullPtr
Just jCancellable -> do
let jCancellable' = unsafeManagedPtrCastPtr jCancellable
return jCancellable'
onException (do
_ <- propagateGError $ g_network_monitor_can_reach _obj' connectable' maybeCancellable
touchManagedPtr _obj
touchManagedPtr connectable
whenJust cancellable touchManagedPtr
return ()
) (do
return ()
)
foreign import ccall "g_network_monitor_can_reach_async" g_network_monitor_can_reach_async ::
Ptr NetworkMonitor ->
Ptr SocketConnectable ->
Ptr Cancellable ->
FunPtr AsyncReadyCallbackC ->
Ptr () ->
IO ()
networkMonitorCanReachAsync ::
(MonadIO m, NetworkMonitorK a, SocketConnectableK b, CancellableK c) =>
a ->
b ->
Maybe (c) ->
Maybe (AsyncReadyCallback) ->
m ()
networkMonitorCanReachAsync _obj connectable cancellable callback = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
let connectable' = unsafeManagedPtrCastPtr connectable
maybeCancellable <- case cancellable of
Nothing -> return nullPtr
Just jCancellable -> do
let jCancellable' = unsafeManagedPtrCastPtr jCancellable
return jCancellable'
ptrcallback <- callocMem :: IO (Ptr (FunPtr AsyncReadyCallbackC))
maybeCallback <- case callback of
Nothing -> return (castPtrToFunPtr nullPtr)
Just jCallback -> do
jCallback' <- mkAsyncReadyCallback (asyncReadyCallbackWrapper (Just ptrcallback) jCallback)
poke ptrcallback jCallback'
return jCallback'
let user_data = nullPtr
g_network_monitor_can_reach_async _obj' connectable' maybeCancellable maybeCallback user_data
touchManagedPtr _obj
touchManagedPtr connectable
whenJust cancellable touchManagedPtr
return ()
foreign import ccall "g_network_monitor_can_reach_finish" g_network_monitor_can_reach_finish ::
Ptr NetworkMonitor ->
Ptr AsyncResult ->
Ptr (Ptr GError) ->
IO CInt
networkMonitorCanReachFinish ::
(MonadIO m, NetworkMonitorK a, AsyncResultK b) =>
a ->
b ->
m ()
networkMonitorCanReachFinish _obj result_ = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
let result_' = unsafeManagedPtrCastPtr result_
onException (do
_ <- propagateGError $ g_network_monitor_can_reach_finish _obj' result_'
touchManagedPtr _obj
touchManagedPtr result_
return ()
) (do
return ()
)
foreign import ccall "g_network_monitor_get_connectivity" g_network_monitor_get_connectivity ::
Ptr NetworkMonitor ->
IO CUInt
networkMonitorGetConnectivity ::
(MonadIO m, NetworkMonitorK a) =>
a ->
m NetworkConnectivity
networkMonitorGetConnectivity _obj = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
result <- g_network_monitor_get_connectivity _obj'
let result' = (toEnum . fromIntegral) result
touchManagedPtr _obj
return result'
foreign import ccall "g_network_monitor_get_network_available" g_network_monitor_get_network_available ::
Ptr NetworkMonitor ->
IO CInt
networkMonitorGetNetworkAvailable ::
(MonadIO m, NetworkMonitorK a) =>
a ->
m Bool
networkMonitorGetNetworkAvailable _obj = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
result <- g_network_monitor_get_network_available _obj'
let result' = (/= 0) result
touchManagedPtr _obj
return result'