{- | 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.TlsServerConnection.TlsServerConnection' is the server-side subclass of 'GI.Gio.Objects.TlsConnection.TlsConnection', representing a server-side TLS connection. /Since: 2.28/ -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Gio.Interfaces.TlsServerConnection ( -- * Exported types TlsServerConnection(..) , noTlsServerConnection , IsTlsServerConnection , toTlsServerConnection , -- * Methods -- ** new #method:new# tlsServerConnectionNew , -- * Properties -- ** authenticationMode #attr:authenticationMode# {- | The 'GI.Gio.Enums.TlsAuthenticationMode' for the server. This can be changed before calling 'GI.Gio.Objects.TlsConnection.tlsConnectionHandshake' if you want to rehandshake with a different mode from the initial handshake. /Since: 2.28/ -} #if ENABLE_OVERLOADING TlsServerConnectionAuthenticationModePropertyInfo, #endif constructTlsServerConnectionAuthenticationMode, getTlsServerConnectionAuthenticationMode, setTlsServerConnectionAuthenticationMode, #if ENABLE_OVERLOADING tlsServerConnectionAuthenticationMode , #endif ) 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.Objects.IOStream as Gio.IOStream import {-# SOURCE #-} qualified GI.Gio.Objects.TlsCertificate as Gio.TlsCertificate import {-# SOURCE #-} qualified GI.Gio.Objects.TlsConnection as Gio.TlsConnection -- interface TlsServerConnection -- | Memory-managed wrapper type. newtype TlsServerConnection = TlsServerConnection (ManagedPtr TlsServerConnection) -- | A convenience alias for `Nothing` :: `Maybe` `TlsServerConnection`. noTlsServerConnection :: Maybe TlsServerConnection noTlsServerConnection = Nothing #if ENABLE_OVERLOADING type instance O.SignalList TlsServerConnection = TlsServerConnectionSignalList type TlsServerConnectionSignalList = ('[ '("acceptCertificate", Gio.TlsConnection.TlsConnectionAcceptCertificateSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)]) #endif foreign import ccall "g_tls_server_connection_get_type" c_g_tls_server_connection_get_type :: IO GType instance GObject TlsServerConnection where gobjectType = c_g_tls_server_connection_get_type -- | Type class for types which can be safely cast to `TlsServerConnection`, for instance with `toTlsServerConnection`. class (GObject o, O.IsDescendantOf TlsServerConnection o) => IsTlsServerConnection o instance (GObject o, O.IsDescendantOf TlsServerConnection o) => IsTlsServerConnection o instance O.HasParentTypes TlsServerConnection type instance O.ParentTypes TlsServerConnection = '[GObject.Object.Object, Gio.TlsConnection.TlsConnection, Gio.IOStream.IOStream] -- | Cast to `TlsServerConnection`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toTlsServerConnection :: (MonadIO m, IsTlsServerConnection o) => o -> m TlsServerConnection toTlsServerConnection = liftIO . unsafeCastTo TlsServerConnection -- 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' tlsServerConnection #authenticationMode @ -} getTlsServerConnectionAuthenticationMode :: (MonadIO m, IsTlsServerConnection o) => o -> m Gio.Enums.TlsAuthenticationMode getTlsServerConnectionAuthenticationMode 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' tlsServerConnection [ #authenticationMode 'Data.GI.Base.Attributes.:=' value ] @ -} setTlsServerConnectionAuthenticationMode :: (MonadIO m, IsTlsServerConnection o) => o -> Gio.Enums.TlsAuthenticationMode -> m () setTlsServerConnectionAuthenticationMode 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`. -} constructTlsServerConnectionAuthenticationMode :: (IsTlsServerConnection o) => Gio.Enums.TlsAuthenticationMode -> IO (GValueConstruct o) constructTlsServerConnectionAuthenticationMode val = B.Properties.constructObjectPropertyEnum "authentication-mode" val #if ENABLE_OVERLOADING data TlsServerConnectionAuthenticationModePropertyInfo instance AttrInfo TlsServerConnectionAuthenticationModePropertyInfo where type AttrAllowedOps TlsServerConnectionAuthenticationModePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet] type AttrSetTypeConstraint TlsServerConnectionAuthenticationModePropertyInfo = (~) Gio.Enums.TlsAuthenticationMode type AttrBaseTypeConstraint TlsServerConnectionAuthenticationModePropertyInfo = IsTlsServerConnection type AttrGetType TlsServerConnectionAuthenticationModePropertyInfo = Gio.Enums.TlsAuthenticationMode type AttrLabel TlsServerConnectionAuthenticationModePropertyInfo = "authentication-mode" type AttrOrigin TlsServerConnectionAuthenticationModePropertyInfo = TlsServerConnection attrGet _ = getTlsServerConnectionAuthenticationMode attrSet _ = setTlsServerConnectionAuthenticationMode attrConstruct _ = constructTlsServerConnectionAuthenticationMode attrClear _ = undefined #endif #if ENABLE_OVERLOADING instance O.HasAttributeList TlsServerConnection type instance O.AttributeList TlsServerConnection = TlsServerConnectionAttributeList type TlsServerConnectionAttributeList = ('[ '("advertisedProtocols", Gio.TlsConnection.TlsConnectionAdvertisedProtocolsPropertyInfo), '("authenticationMode", TlsServerConnectionAuthenticationModePropertyInfo), '("baseIoStream", Gio.TlsConnection.TlsConnectionBaseIoStreamPropertyInfo), '("certificate", Gio.TlsConnection.TlsConnectionCertificatePropertyInfo), '("closed", Gio.IOStream.IOStreamClosedPropertyInfo), '("database", Gio.TlsConnection.TlsConnectionDatabasePropertyInfo), '("inputStream", Gio.IOStream.IOStreamInputStreamPropertyInfo), '("interaction", Gio.TlsConnection.TlsConnectionInteractionPropertyInfo), '("negotiatedProtocol", Gio.TlsConnection.TlsConnectionNegotiatedProtocolPropertyInfo), '("outputStream", Gio.IOStream.IOStreamOutputStreamPropertyInfo), '("peerCertificate", Gio.TlsConnection.TlsConnectionPeerCertificatePropertyInfo), '("peerCertificateErrors", Gio.TlsConnection.TlsConnectionPeerCertificateErrorsPropertyInfo), '("rehandshakeMode", Gio.TlsConnection.TlsConnectionRehandshakeModePropertyInfo), '("requireCloseNotify", Gio.TlsConnection.TlsConnectionRequireCloseNotifyPropertyInfo), '("useSystemCertdb", Gio.TlsConnection.TlsConnectionUseSystemCertdbPropertyInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING tlsServerConnectionAuthenticationMode :: AttrLabelProxy "authenticationMode" tlsServerConnectionAuthenticationMode = AttrLabelProxy #endif #if ENABLE_OVERLOADING type family ResolveTlsServerConnectionMethod (t :: Symbol) (o :: *) :: * where ResolveTlsServerConnectionMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveTlsServerConnectionMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveTlsServerConnectionMethod "clearPending" o = Gio.IOStream.IOStreamClearPendingMethodInfo ResolveTlsServerConnectionMethod "close" o = Gio.IOStream.IOStreamCloseMethodInfo ResolveTlsServerConnectionMethod "closeAsync" o = Gio.IOStream.IOStreamCloseAsyncMethodInfo ResolveTlsServerConnectionMethod "closeFinish" o = Gio.IOStream.IOStreamCloseFinishMethodInfo ResolveTlsServerConnectionMethod "emitAcceptCertificate" o = Gio.TlsConnection.TlsConnectionEmitAcceptCertificateMethodInfo ResolveTlsServerConnectionMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveTlsServerConnectionMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveTlsServerConnectionMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveTlsServerConnectionMethod "handshake" o = Gio.TlsConnection.TlsConnectionHandshakeMethodInfo ResolveTlsServerConnectionMethod "handshakeAsync" o = Gio.TlsConnection.TlsConnectionHandshakeAsyncMethodInfo ResolveTlsServerConnectionMethod "handshakeFinish" o = Gio.TlsConnection.TlsConnectionHandshakeFinishMethodInfo ResolveTlsServerConnectionMethod "hasPending" o = Gio.IOStream.IOStreamHasPendingMethodInfo ResolveTlsServerConnectionMethod "isClosed" o = Gio.IOStream.IOStreamIsClosedMethodInfo ResolveTlsServerConnectionMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveTlsServerConnectionMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveTlsServerConnectionMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveTlsServerConnectionMethod "ref" o = GObject.Object.ObjectRefMethodInfo ResolveTlsServerConnectionMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveTlsServerConnectionMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveTlsServerConnectionMethod "spliceAsync" o = Gio.IOStream.IOStreamSpliceAsyncMethodInfo ResolveTlsServerConnectionMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveTlsServerConnectionMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveTlsServerConnectionMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveTlsServerConnectionMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo ResolveTlsServerConnectionMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveTlsServerConnectionMethod "getCertificate" o = Gio.TlsConnection.TlsConnectionGetCertificateMethodInfo ResolveTlsServerConnectionMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveTlsServerConnectionMethod "getDatabase" o = Gio.TlsConnection.TlsConnectionGetDatabaseMethodInfo ResolveTlsServerConnectionMethod "getInputStream" o = Gio.IOStream.IOStreamGetInputStreamMethodInfo ResolveTlsServerConnectionMethod "getInteraction" o = Gio.TlsConnection.TlsConnectionGetInteractionMethodInfo ResolveTlsServerConnectionMethod "getNegotiatedProtocol" o = Gio.TlsConnection.TlsConnectionGetNegotiatedProtocolMethodInfo ResolveTlsServerConnectionMethod "getOutputStream" o = Gio.IOStream.IOStreamGetOutputStreamMethodInfo ResolveTlsServerConnectionMethod "getPeerCertificate" o = Gio.TlsConnection.TlsConnectionGetPeerCertificateMethodInfo ResolveTlsServerConnectionMethod "getPeerCertificateErrors" o = Gio.TlsConnection.TlsConnectionGetPeerCertificateErrorsMethodInfo ResolveTlsServerConnectionMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveTlsServerConnectionMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveTlsServerConnectionMethod "getRehandshakeMode" o = Gio.TlsConnection.TlsConnectionGetRehandshakeModeMethodInfo ResolveTlsServerConnectionMethod "getRequireCloseNotify" o = Gio.TlsConnection.TlsConnectionGetRequireCloseNotifyMethodInfo ResolveTlsServerConnectionMethod "getUseSystemCertdb" o = Gio.TlsConnection.TlsConnectionGetUseSystemCertdbMethodInfo ResolveTlsServerConnectionMethod "setAdvertisedProtocols" o = Gio.TlsConnection.TlsConnectionSetAdvertisedProtocolsMethodInfo ResolveTlsServerConnectionMethod "setCertificate" o = Gio.TlsConnection.TlsConnectionSetCertificateMethodInfo ResolveTlsServerConnectionMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveTlsServerConnectionMethod "setDatabase" o = Gio.TlsConnection.TlsConnectionSetDatabaseMethodInfo ResolveTlsServerConnectionMethod "setInteraction" o = Gio.TlsConnection.TlsConnectionSetInteractionMethodInfo ResolveTlsServerConnectionMethod "setPending" o = Gio.IOStream.IOStreamSetPendingMethodInfo ResolveTlsServerConnectionMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveTlsServerConnectionMethod "setRehandshakeMode" o = Gio.TlsConnection.TlsConnectionSetRehandshakeModeMethodInfo ResolveTlsServerConnectionMethod "setRequireCloseNotify" o = Gio.TlsConnection.TlsConnectionSetRequireCloseNotifyMethodInfo ResolveTlsServerConnectionMethod "setUseSystemCertdb" o = Gio.TlsConnection.TlsConnectionSetUseSystemCertdbMethodInfo ResolveTlsServerConnectionMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveTlsServerConnectionMethod t TlsServerConnection, O.MethodInfo info TlsServerConnection p) => OL.IsLabel t (TlsServerConnection -> 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 TlsServerConnection::new -- method type : MemberFunction -- Args : [Arg {argCName = "base_io_stream", argType = TInterface (Name {namespace = "Gio", name = "IOStream"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GIOStream 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 = "TlsServerConnection"})) -- throws : True -- Skip return : False foreign import ccall "g_tls_server_connection_new" g_tls_server_connection_new :: Ptr Gio.IOStream.IOStream -> -- base_io_stream : TInterface (Name {namespace = "Gio", name = "IOStream"}) Ptr Gio.TlsCertificate.TlsCertificate -> -- certificate : TInterface (Name {namespace = "Gio", name = "TlsCertificate"}) Ptr (Ptr GError) -> -- error IO (Ptr TlsServerConnection) {- | Creates a new 'GI.Gio.Interfaces.TlsServerConnection.TlsServerConnection' wrapping /@baseIoStream@/ (which must have pollable input and output streams). See the documentation for 'GI.Gio.Objects.TlsConnection.TlsConnection':@/base-io-stream/@ for restrictions on when application code can run operations on the /@baseIoStream@/ after this function has returned. /Since: 2.28/ -} tlsServerConnectionNew :: (B.CallStack.HasCallStack, MonadIO m, Gio.IOStream.IsIOStream a, Gio.TlsCertificate.IsTlsCertificate b) => a {- ^ /@baseIoStream@/: the 'GI.Gio.Objects.IOStream.IOStream' to wrap -} -> Maybe (b) {- ^ /@certificate@/: the default server certificate, or 'Nothing' -} -> m TlsServerConnection {- ^ __Returns:__ the new 'GI.Gio.Interfaces.TlsServerConnection.TlsServerConnection', or 'Nothing' on error /(Can throw 'Data.GI.Base.GError.GError')/ -} tlsServerConnectionNew baseIoStream certificate = liftIO $ do baseIoStream' <- unsafeManagedPtrCastPtr baseIoStream maybeCertificate <- case certificate of Nothing -> return nullPtr Just jCertificate -> do jCertificate' <- unsafeManagedPtrCastPtr jCertificate return jCertificate' onException (do result <- propagateGError $ g_tls_server_connection_new baseIoStream' maybeCertificate checkUnexpectedReturnNULL "tlsServerConnectionNew" result result' <- (wrapObject TlsServerConnection) result touchManagedPtr baseIoStream whenJust certificate touchManagedPtr return result' ) (do return () ) #if ENABLE_OVERLOADING #endif