gi-gio
CopyrightWill Thompson and Iñaki García Etxebarria
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria
Safe HaskellNone
LanguageHaskell2010

GI.Gio.Objects.ThreadedSocketService

Description

A GThreadedSocketService is a simple subclass of SocketService that handles incoming connections by creating a worker thread and dispatching the connection to it by emitting the signalgio.ThreadedSocketService[run signal] in the new thread.

The signal handler may perform blocking I/O and need not return until the connection is closed.

The service is implemented using a thread pool, so there is a limited amount of threads available to serve incoming requests. The service automatically stops the SocketService from accepting new connections when all threads are busy.

As with SocketService, you may connect to ThreadedSocketService::run, or subclass and override the default handler.

Since: 2.22

Synopsis

Exported types

newtype ThreadedSocketService Source #

Memory-managed wrapper type.

Instances

Instances details
Eq ThreadedSocketService Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

GObject ThreadedSocketService Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

ManagedPtrNewtype ThreadedSocketService Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

TypedObject ThreadedSocketService Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

Methods

glibType :: IO GType #

HasParentTypes ThreadedSocketService Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

HasAttributeList ThreadedSocketService Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

(info ~ ResolveThreadedSocketServiceMethod t ThreadedSocketService, OverloadedMethod info ThreadedSocketService p, HasField t ThreadedSocketService p) => HasField (t :: Symbol) ThreadedSocketService (p :: Type) Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

(info ~ ResolveThreadedSocketServiceMethod t ThreadedSocketService, OverloadedMethodInfo info ThreadedSocketService) => IsLabel t (MethodProxy info ThreadedSocketService) Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

(info ~ ResolveThreadedSocketServiceMethod t ThreadedSocketService, OverloadedMethod info ThreadedSocketService p) => IsLabel t (ThreadedSocketService -> p) Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

IsGValue (Maybe ThreadedSocketService) Source #

Convert ThreadedSocketService to and from GValue. See toGValue and fromGValue.

Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttributeList ThreadedSocketService Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type ParentTypes ThreadedSocketService Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type SignalList ThreadedSocketService Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

class (GObject o, IsDescendantOf ThreadedSocketService o) => IsThreadedSocketService o Source #

Type class for types which can be safely cast to ThreadedSocketService, for instance with toThreadedSocketService.

Instances

Instances details
(GObject o, IsDescendantOf ThreadedSocketService o) => IsThreadedSocketService o Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

toThreadedSocketService :: (MonadIO m, IsThreadedSocketService o) => o -> m ThreadedSocketService Source #

Cast to ThreadedSocketService, for types for which this is known to be safe. For general casts, use castTo.

Methods

type family ResolveThreadedSocketServiceMethod (t :: Symbol) o where ... Source #

Equations

ResolveThreadedSocketServiceMethod "accept" o = SocketListenerAcceptMethodInfo 
ResolveThreadedSocketServiceMethod "acceptAsync" o = SocketListenerAcceptAsyncMethodInfo 
ResolveThreadedSocketServiceMethod "acceptFinish" o = SocketListenerAcceptFinishMethodInfo 
ResolveThreadedSocketServiceMethod "acceptSocket" o = SocketListenerAcceptSocketMethodInfo 
ResolveThreadedSocketServiceMethod "acceptSocketAsync" o = SocketListenerAcceptSocketAsyncMethodInfo 
ResolveThreadedSocketServiceMethod "acceptSocketFinish" o = SocketListenerAcceptSocketFinishMethodInfo 
ResolveThreadedSocketServiceMethod "addAddress" o = SocketListenerAddAddressMethodInfo 
ResolveThreadedSocketServiceMethod "addAnyInetPort" o = SocketListenerAddAnyInetPortMethodInfo 
ResolveThreadedSocketServiceMethod "addInetPort" o = SocketListenerAddInetPortMethodInfo 
ResolveThreadedSocketServiceMethod "addSocket" o = SocketListenerAddSocketMethodInfo 
ResolveThreadedSocketServiceMethod "bindProperty" o = ObjectBindPropertyMethodInfo 
ResolveThreadedSocketServiceMethod "bindPropertyFull" o = ObjectBindPropertyFullMethodInfo 
ResolveThreadedSocketServiceMethod "close" o = SocketListenerCloseMethodInfo 
ResolveThreadedSocketServiceMethod "forceFloating" o = ObjectForceFloatingMethodInfo 
ResolveThreadedSocketServiceMethod "freezeNotify" o = ObjectFreezeNotifyMethodInfo 
ResolveThreadedSocketServiceMethod "getv" o = ObjectGetvMethodInfo 
ResolveThreadedSocketServiceMethod "isActive" o = SocketServiceIsActiveMethodInfo 
ResolveThreadedSocketServiceMethod "isFloating" o = ObjectIsFloatingMethodInfo 
ResolveThreadedSocketServiceMethod "notify" o = ObjectNotifyMethodInfo 
ResolveThreadedSocketServiceMethod "notifyByPspec" o = ObjectNotifyByPspecMethodInfo 
ResolveThreadedSocketServiceMethod "ref" o = ObjectRefMethodInfo 
ResolveThreadedSocketServiceMethod "refSink" o = ObjectRefSinkMethodInfo 
ResolveThreadedSocketServiceMethod "runDispose" o = ObjectRunDisposeMethodInfo 
ResolveThreadedSocketServiceMethod "start" o = SocketServiceStartMethodInfo 
ResolveThreadedSocketServiceMethod "stealData" o = ObjectStealDataMethodInfo 
ResolveThreadedSocketServiceMethod "stealQdata" o = ObjectStealQdataMethodInfo 
ResolveThreadedSocketServiceMethod "stop" o = SocketServiceStopMethodInfo 
ResolveThreadedSocketServiceMethod "thawNotify" o = ObjectThawNotifyMethodInfo 
ResolveThreadedSocketServiceMethod "unref" o = ObjectUnrefMethodInfo 
ResolveThreadedSocketServiceMethod "watchClosure" o = ObjectWatchClosureMethodInfo 
ResolveThreadedSocketServiceMethod "getData" o = ObjectGetDataMethodInfo 
ResolveThreadedSocketServiceMethod "getProperty" o = ObjectGetPropertyMethodInfo 
ResolveThreadedSocketServiceMethod "getQdata" o = ObjectGetQdataMethodInfo 
ResolveThreadedSocketServiceMethod "setBacklog" o = SocketListenerSetBacklogMethodInfo 
ResolveThreadedSocketServiceMethod "setData" o = ObjectSetDataMethodInfo 
ResolveThreadedSocketServiceMethod "setDataFull" o = ObjectSetDataFullMethodInfo 
ResolveThreadedSocketServiceMethod "setProperty" o = ObjectSetPropertyMethodInfo 
ResolveThreadedSocketServiceMethod l o = MethodResolutionFailed l o :: Type 

new

threadedSocketServiceNew Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> Int32

maxThreads: the maximal number of threads to execute concurrently handling incoming clients, -1 means no limit

-> m ThreadedSocketService

Returns: a new SocketService.

Creates a new ThreadedSocketService with no listeners. Listeners must be added with one of the SocketListener "add" methods.

Since: 2.22

Properties

maxThreads

The maximum number of threads handling clients for this service.

Since: 2.22

data ThreadedSocketServiceMaxThreadsPropertyInfo Source #

Instances

Instances details
AttrInfo ThreadedSocketServiceMaxThreadsPropertyInfo Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

Associated Types

type AttrAllowedOps ThreadedSocketServiceMaxThreadsPropertyInfo 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrBaseTypeConstraint ThreadedSocketServiceMaxThreadsPropertyInfo 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrGetType ThreadedSocketServiceMaxThreadsPropertyInfo 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrSetTypeConstraint ThreadedSocketServiceMaxThreadsPropertyInfo 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrTransferTypeConstraint ThreadedSocketServiceMaxThreadsPropertyInfo 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrTransferType ThreadedSocketServiceMaxThreadsPropertyInfo 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrLabel ThreadedSocketServiceMaxThreadsPropertyInfo 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrOrigin ThreadedSocketServiceMaxThreadsPropertyInfo 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrAllowedOps ThreadedSocketServiceMaxThreadsPropertyInfo Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrBaseTypeConstraint ThreadedSocketServiceMaxThreadsPropertyInfo Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrGetType ThreadedSocketServiceMaxThreadsPropertyInfo Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrLabel ThreadedSocketServiceMaxThreadsPropertyInfo Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrOrigin ThreadedSocketServiceMaxThreadsPropertyInfo Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrSetTypeConstraint ThreadedSocketServiceMaxThreadsPropertyInfo Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrTransferType ThreadedSocketServiceMaxThreadsPropertyInfo Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

type AttrTransferTypeConstraint ThreadedSocketServiceMaxThreadsPropertyInfo Source # 
Instance details

Defined in GI.Gio.Objects.ThreadedSocketService

constructThreadedSocketServiceMaxThreads :: (IsThreadedSocketService o, MonadIO m) => Int32 -> m (GValueConstruct o) Source #

Construct a GValueConstruct with valid value for the “max-threads” property. This is rarely needed directly, but it is used by new.

getThreadedSocketServiceMaxThreads :: (MonadIO m, IsThreadedSocketService o) => o -> m Int32 Source #

Get the value of the “max-threads” property. When overloading is enabled, this is equivalent to

get threadedSocketService #maxThreads

Signals

run

type ThreadedSocketServiceRunCallback Source #

Arguments

 = SocketConnection

connection: a new SocketConnection object.

-> Maybe Object

sourceObject: the source_object passed to socketListenerAddAddress.

-> IO Bool

Returns: True to stop further signal handlers from being called

The run signal is emitted in a worker thread in response to an incoming connection. This thread is dedicated to handling connection and may perform blocking IO. The signal handler need not return until the connection is closed.

afterThreadedSocketServiceRun :: (IsThreadedSocketService a, MonadIO m) => a -> ((?self :: a) => ThreadedSocketServiceRunCallback) -> m SignalHandlerId Source #

Connect a signal handler for the run signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after threadedSocketService #run 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.

onThreadedSocketServiceRun :: (IsThreadedSocketService a, MonadIO m) => a -> ((?self :: a) => ThreadedSocketServiceRunCallback) -> m SignalHandlerId Source #

Connect a signal handler for the run signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on threadedSocketService #run callback