{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) 'GI.Gio.Interfaces.DtlsServerConnection.DtlsServerConnection' is the server-side subclass of 'GI.Gio.Interfaces.DtlsConnection.DtlsConnection', representing a server-side DTLS connection. /Since: 2.48/ -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Gio.Interfaces.DtlsServerConnection ( -- * Exported types DtlsServerConnection(..) , noDtlsServerConnection , IsDtlsServerConnection , toDtlsServerConnection , -- * Methods -- ** new #method:new# dtlsServerConnectionNew , -- * Properties -- ** authenticationMode #attr:authenticationMode# {- | The 'GI.Gio.Enums.TlsAuthenticationMode' for the server. This can be changed before calling 'GI.Gio.Interfaces.DtlsConnection.dtlsConnectionHandshake' if you want to rehandshake with a different mode from the initial handshake. /Since: 2.48/ -} #if ENABLE_OVERLOADING DtlsServerConnectionAuthenticationModePropertyInfo, #endif constructDtlsServerConnectionAuthenticationMode, #if ENABLE_OVERLOADING dtlsServerConnectionAuthenticationMode , #endif getDtlsServerConnectionAuthenticationMode, setDtlsServerConnectionAuthenticationMode, ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GValue as B.GValue import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.GI.Base.Properties as B.Properties import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GHC.OverloadedLabels as OL import qualified GI.GObject.Objects.Object as GObject.Object import {-# SOURCE #-} qualified GI.Gio.Enums as Gio.Enums import {-# SOURCE #-} qualified GI.Gio.Interfaces.DatagramBased as Gio.DatagramBased import {-# SOURCE #-} qualified GI.Gio.Interfaces.DtlsConnection as Gio.DtlsConnection import {-# SOURCE #-} qualified GI.Gio.Objects.TlsCertificate as Gio.TlsCertificate -- interface DtlsServerConnection -- | Memory-managed wrapper type. newtype DtlsServerConnection = DtlsServerConnection (ManagedPtr DtlsServerConnection) -- | A convenience alias for `Nothing` :: `Maybe` `DtlsServerConnection`. noDtlsServerConnection :: Maybe DtlsServerConnection noDtlsServerConnection = Nothing #if ENABLE_OVERLOADING type instance O.SignalList DtlsServerConnection = DtlsServerConnectionSignalList type DtlsServerConnectionSignalList = ('[ '("acceptCertificate", Gio.DtlsConnection.DtlsConnectionAcceptCertificateSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)]) #endif foreign import ccall "g_dtls_server_connection_get_type" c_g_dtls_server_connection_get_type :: IO GType instance GObject DtlsServerConnection where gobjectType = c_g_dtls_server_connection_get_type -- | Type class for types which can be safely cast to `DtlsServerConnection`, for instance with `toDtlsServerConnection`. class (GObject o, O.IsDescendantOf DtlsServerConnection o) => IsDtlsServerConnection o instance (GObject o, O.IsDescendantOf DtlsServerConnection o) => IsDtlsServerConnection o instance O.HasParentTypes DtlsServerConnection type instance O.ParentTypes DtlsServerConnection = '[Gio.DatagramBased.DatagramBased, Gio.DtlsConnection.DtlsConnection, GObject.Object.Object] -- | Cast to `DtlsServerConnection`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toDtlsServerConnection :: (MonadIO m, IsDtlsServerConnection o) => o -> m DtlsServerConnection toDtlsServerConnection = liftIO . unsafeCastTo DtlsServerConnection -- VVV Prop "authentication-mode" -- Type: TInterface (Name {namespace = "Gio", name = "TlsAuthenticationMode"}) -- Flags: [PropertyReadable,PropertyWritable] -- Nullable: (Nothing,Nothing) {- | Get the value of the “@authentication-mode@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' dtlsServerConnection #authenticationMode @ -} getDtlsServerConnectionAuthenticationMode :: (MonadIO m, IsDtlsServerConnection o) => o -> m Gio.Enums.TlsAuthenticationMode getDtlsServerConnectionAuthenticationMode obj = liftIO $ B.Properties.getObjectPropertyEnum obj "authentication-mode" {- | Set the value of the “@authentication-mode@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' dtlsServerConnection [ #authenticationMode 'Data.GI.Base.Attributes.:=' value ] @ -} setDtlsServerConnectionAuthenticationMode :: (MonadIO m, IsDtlsServerConnection o) => o -> Gio.Enums.TlsAuthenticationMode -> m () setDtlsServerConnectionAuthenticationMode obj val = liftIO $ B.Properties.setObjectPropertyEnum obj "authentication-mode" val {- | Construct a `GValueConstruct` with valid value for the “@authentication-mode@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructDtlsServerConnectionAuthenticationMode :: (IsDtlsServerConnection o) => Gio.Enums.TlsAuthenticationMode -> IO (GValueConstruct o) constructDtlsServerConnectionAuthenticationMode val = B.Properties.constructObjectPropertyEnum "authentication-mode" val #if ENABLE_OVERLOADING data DtlsServerConnectionAuthenticationModePropertyInfo instance AttrInfo DtlsServerConnectionAuthenticationModePropertyInfo where type AttrAllowedOps DtlsServerConnectionAuthenticationModePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet] type AttrSetTypeConstraint DtlsServerConnectionAuthenticationModePropertyInfo = (~) Gio.Enums.TlsAuthenticationMode type AttrBaseTypeConstraint DtlsServerConnectionAuthenticationModePropertyInfo = IsDtlsServerConnection type AttrGetType DtlsServerConnectionAuthenticationModePropertyInfo = Gio.Enums.TlsAuthenticationMode type AttrLabel DtlsServerConnectionAuthenticationModePropertyInfo = "authentication-mode" type AttrOrigin DtlsServerConnectionAuthenticationModePropertyInfo = DtlsServerConnection attrGet _ = getDtlsServerConnectionAuthenticationMode attrSet _ = setDtlsServerConnectionAuthenticationMode attrConstruct _ = constructDtlsServerConnectionAuthenticationMode attrClear _ = undefined #endif #if ENABLE_OVERLOADING instance O.HasAttributeList DtlsServerConnection type instance O.AttributeList DtlsServerConnection = DtlsServerConnectionAttributeList type DtlsServerConnectionAttributeList = ('[ '("advertisedProtocols", Gio.DtlsConnection.DtlsConnectionAdvertisedProtocolsPropertyInfo), '("authenticationMode", DtlsServerConnectionAuthenticationModePropertyInfo), '("baseSocket", Gio.DtlsConnection.DtlsConnectionBaseSocketPropertyInfo), '("certificate", Gio.DtlsConnection.DtlsConnectionCertificatePropertyInfo), '("database", Gio.DtlsConnection.DtlsConnectionDatabasePropertyInfo), '("interaction", Gio.DtlsConnection.DtlsConnectionInteractionPropertyInfo), '("negotiatedProtocol", Gio.DtlsConnection.DtlsConnectionNegotiatedProtocolPropertyInfo), '("peerCertificate", Gio.DtlsConnection.DtlsConnectionPeerCertificatePropertyInfo), '("peerCertificateErrors", Gio.DtlsConnection.DtlsConnectionPeerCertificateErrorsPropertyInfo), '("rehandshakeMode", Gio.DtlsConnection.DtlsConnectionRehandshakeModePropertyInfo), '("requireCloseNotify", Gio.DtlsConnection.DtlsConnectionRequireCloseNotifyPropertyInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING dtlsServerConnectionAuthenticationMode :: AttrLabelProxy "authenticationMode" dtlsServerConnectionAuthenticationMode = AttrLabelProxy #endif #if ENABLE_OVERLOADING type family ResolveDtlsServerConnectionMethod (t :: Symbol) (o :: *) :: * where ResolveDtlsServerConnectionMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveDtlsServerConnectionMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveDtlsServerConnectionMethod "close" o = Gio.DtlsConnection.DtlsConnectionCloseMethodInfo ResolveDtlsServerConnectionMethod "closeAsync" o = Gio.DtlsConnection.DtlsConnectionCloseAsyncMethodInfo ResolveDtlsServerConnectionMethod "closeFinish" o = Gio.DtlsConnection.DtlsConnectionCloseFinishMethodInfo ResolveDtlsServerConnectionMethod "conditionCheck" o = Gio.DatagramBased.DatagramBasedConditionCheckMethodInfo ResolveDtlsServerConnectionMethod "conditionWait" o = Gio.DatagramBased.DatagramBasedConditionWaitMethodInfo ResolveDtlsServerConnectionMethod "createSource" o = Gio.DatagramBased.DatagramBasedCreateSourceMethodInfo ResolveDtlsServerConnectionMethod "emitAcceptCertificate" o = Gio.DtlsConnection.DtlsConnectionEmitAcceptCertificateMethodInfo ResolveDtlsServerConnectionMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveDtlsServerConnectionMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveDtlsServerConnectionMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveDtlsServerConnectionMethod "handshake" o = Gio.DtlsConnection.DtlsConnectionHandshakeMethodInfo ResolveDtlsServerConnectionMethod "handshakeAsync" o = Gio.DtlsConnection.DtlsConnectionHandshakeAsyncMethodInfo ResolveDtlsServerConnectionMethod "handshakeFinish" o = Gio.DtlsConnection.DtlsConnectionHandshakeFinishMethodInfo ResolveDtlsServerConnectionMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveDtlsServerConnectionMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveDtlsServerConnectionMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveDtlsServerConnectionMethod "receiveMessages" o = Gio.DatagramBased.DatagramBasedReceiveMessagesMethodInfo ResolveDtlsServerConnectionMethod "ref" o = GObject.Object.ObjectRefMethodInfo ResolveDtlsServerConnectionMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveDtlsServerConnectionMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveDtlsServerConnectionMethod "sendMessages" o = Gio.DatagramBased.DatagramBasedSendMessagesMethodInfo ResolveDtlsServerConnectionMethod "shutdown" o = Gio.DtlsConnection.DtlsConnectionShutdownMethodInfo ResolveDtlsServerConnectionMethod "shutdownAsync" o = Gio.DtlsConnection.DtlsConnectionShutdownAsyncMethodInfo ResolveDtlsServerConnectionMethod "shutdownFinish" o = Gio.DtlsConnection.DtlsConnectionShutdownFinishMethodInfo ResolveDtlsServerConnectionMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveDtlsServerConnectionMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveDtlsServerConnectionMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveDtlsServerConnectionMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo ResolveDtlsServerConnectionMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveDtlsServerConnectionMethod "getCertificate" o = Gio.DtlsConnection.DtlsConnectionGetCertificateMethodInfo ResolveDtlsServerConnectionMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveDtlsServerConnectionMethod "getDatabase" o = Gio.DtlsConnection.DtlsConnectionGetDatabaseMethodInfo ResolveDtlsServerConnectionMethod "getInteraction" o = Gio.DtlsConnection.DtlsConnectionGetInteractionMethodInfo ResolveDtlsServerConnectionMethod "getNegotiatedProtocol" o = Gio.DtlsConnection.DtlsConnectionGetNegotiatedProtocolMethodInfo ResolveDtlsServerConnectionMethod "getPeerCertificate" o = Gio.DtlsConnection.DtlsConnectionGetPeerCertificateMethodInfo ResolveDtlsServerConnectionMethod "getPeerCertificateErrors" o = Gio.DtlsConnection.DtlsConnectionGetPeerCertificateErrorsMethodInfo ResolveDtlsServerConnectionMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveDtlsServerConnectionMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveDtlsServerConnectionMethod "getRehandshakeMode" o = Gio.DtlsConnection.DtlsConnectionGetRehandshakeModeMethodInfo ResolveDtlsServerConnectionMethod "getRequireCloseNotify" o = Gio.DtlsConnection.DtlsConnectionGetRequireCloseNotifyMethodInfo ResolveDtlsServerConnectionMethod "setAdvertisedProtocols" o = Gio.DtlsConnection.DtlsConnectionSetAdvertisedProtocolsMethodInfo ResolveDtlsServerConnectionMethod "setCertificate" o = Gio.DtlsConnection.DtlsConnectionSetCertificateMethodInfo ResolveDtlsServerConnectionMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveDtlsServerConnectionMethod "setDatabase" o = Gio.DtlsConnection.DtlsConnectionSetDatabaseMethodInfo ResolveDtlsServerConnectionMethod "setInteraction" o = Gio.DtlsConnection.DtlsConnectionSetInteractionMethodInfo ResolveDtlsServerConnectionMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveDtlsServerConnectionMethod "setRehandshakeMode" o = Gio.DtlsConnection.DtlsConnectionSetRehandshakeModeMethodInfo ResolveDtlsServerConnectionMethod "setRequireCloseNotify" o = Gio.DtlsConnection.DtlsConnectionSetRequireCloseNotifyMethodInfo ResolveDtlsServerConnectionMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveDtlsServerConnectionMethod t DtlsServerConnection, O.MethodInfo info DtlsServerConnection p) => OL.IsLabel t (DtlsServerConnection -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif -- method DtlsServerConnection::new -- method type : MemberFunction -- Args : [Arg {argCName = "base_socket", argType = TInterface (Name {namespace = "Gio", name = "DatagramBased"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GDatagramBased to wrap", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "certificate", argType = TInterface (Name {namespace = "Gio", name = "TlsCertificate"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the default server certificate, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gio", name = "DtlsServerConnection"})) -- throws : True -- Skip return : False foreign import ccall "g_dtls_server_connection_new" g_dtls_server_connection_new :: Ptr Gio.DatagramBased.DatagramBased -> -- base_socket : TInterface (Name {namespace = "Gio", name = "DatagramBased"}) Ptr Gio.TlsCertificate.TlsCertificate -> -- certificate : TInterface (Name {namespace = "Gio", name = "TlsCertificate"}) Ptr (Ptr GError) -> -- error IO (Ptr DtlsServerConnection) {- | Creates a new 'GI.Gio.Interfaces.DtlsServerConnection.DtlsServerConnection' wrapping /@baseSocket@/. /Since: 2.48/ -} dtlsServerConnectionNew :: (B.CallStack.HasCallStack, MonadIO m, Gio.DatagramBased.IsDatagramBased a, Gio.TlsCertificate.IsTlsCertificate b) => a {- ^ /@baseSocket@/: the 'GI.Gio.Interfaces.DatagramBased.DatagramBased' to wrap -} -> Maybe (b) {- ^ /@certificate@/: the default server certificate, or 'Nothing' -} -> m DtlsServerConnection {- ^ __Returns:__ the new 'GI.Gio.Interfaces.DtlsServerConnection.DtlsServerConnection', or 'Nothing' on error /(Can throw 'Data.GI.Base.GError.GError')/ -} dtlsServerConnectionNew baseSocket certificate = liftIO $ do baseSocket' <- unsafeManagedPtrCastPtr baseSocket maybeCertificate <- case certificate of Nothing -> return nullPtr Just jCertificate -> do jCertificate' <- unsafeManagedPtrCastPtr jCertificate return jCertificate' onException (do result <- propagateGError $ g_dtls_server_connection_new baseSocket' maybeCertificate checkUnexpectedReturnNULL "dtlsServerConnectionNew" result result' <- (wrapObject DtlsServerConnection) result touchManagedPtr baseSocket whenJust certificate touchManagedPtr return result' ) (do return () ) #if ENABLE_OVERLOADING #endif