Copyright | Will Thompson, Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
Safe Haskell | None |
Language | Haskell2010 |
A ThreadedSocketService
is a simple subclass of SocketService
that handles incoming connections by creating a worker thread and
dispatching the connection to it by emitting the
ThreadedSocketService
::run
signal in the new thread.
The signal handler may perform blocking IO 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.
- newtype ThreadedSocketService = ThreadedSocketService (ManagedPtr ThreadedSocketService)
- class GObject o => IsThreadedSocketService o
- toThreadedSocketService :: IsThreadedSocketService o => o -> IO ThreadedSocketService
- noThreadedSocketService :: Maybe ThreadedSocketService
- threadedSocketServiceNew :: (HasCallStack, MonadIO m) => Int32 -> m ThreadedSocketService
- data ThreadedSocketServiceMaxThreadsPropertyInfo
- constructThreadedSocketServiceMaxThreads :: IsThreadedSocketService o => Int32 -> IO (GValueConstruct o)
- getThreadedSocketServiceMaxThreads :: (MonadIO m, IsThreadedSocketService o) => o -> m Int32
- threadedSocketServiceMaxThreads :: AttrLabelProxy "maxThreads"
- type C_ThreadedSocketServiceRunCallback = Ptr () -> Ptr SocketConnection -> Ptr Object -> Ptr () -> IO CInt
- type ThreadedSocketServiceRunCallback = SocketConnection -> Object -> IO Bool
- data ThreadedSocketServiceRunSignalInfo
- afterThreadedSocketServiceRun :: (IsThreadedSocketService a, MonadIO m) => a -> ThreadedSocketServiceRunCallback -> m SignalHandlerId
- genClosure_ThreadedSocketServiceRun :: ThreadedSocketServiceRunCallback -> IO Closure
- mk_ThreadedSocketServiceRunCallback :: C_ThreadedSocketServiceRunCallback -> IO (FunPtr C_ThreadedSocketServiceRunCallback)
- noThreadedSocketServiceRunCallback :: Maybe ThreadedSocketServiceRunCallback
- onThreadedSocketServiceRun :: (IsThreadedSocketService a, MonadIO m) => a -> ThreadedSocketServiceRunCallback -> m SignalHandlerId
- wrap_ThreadedSocketServiceRunCallback :: ThreadedSocketServiceRunCallback -> Ptr () -> Ptr SocketConnection -> Ptr Object -> Ptr () -> IO CInt
Exported types
newtype ThreadedSocketService Source #
GObject ThreadedSocketService Source # | |
IsObject ThreadedSocketService Source # | |
IsSocketService ThreadedSocketService Source # | |
IsSocketListener ThreadedSocketService Source # | |
IsThreadedSocketService ThreadedSocketService Source # | |
((~) * info (ResolveThreadedSocketServiceMethod t ThreadedSocketService), MethodInfo * info ThreadedSocketService p) => IsLabel t (ThreadedSocketService -> p) Source # | |
((~) * info (ResolveThreadedSocketServiceMethod t ThreadedSocketService), MethodInfo * info ThreadedSocketService p) => IsLabelProxy t (ThreadedSocketService -> p) Source # | |
HasAttributeList * ThreadedSocketService Source # | |
type AttributeList ThreadedSocketService Source # | |
type SignalList ThreadedSocketService Source # | |
class GObject o => IsThreadedSocketService o Source #
Methods
new
threadedSocketServiceNew Source #
:: (HasCallStack, MonadIO m) | |
=> Int32 |
|
-> m ThreadedSocketService | Returns: a new |
Creates a new ThreadedSocketService
with no listeners. Listeners
must be added with one of the SocketListener
"add" methods.
Since: 2.22
Properties
maxThreads
data ThreadedSocketServiceMaxThreadsPropertyInfo Source #
constructThreadedSocketServiceMaxThreads :: IsThreadedSocketService o => Int32 -> IO (GValueConstruct o) Source #
getThreadedSocketServiceMaxThreads :: (MonadIO m, IsThreadedSocketService o) => o -> m Int32 Source #
threadedSocketServiceMaxThreads :: AttrLabelProxy "maxThreads" Source #
Signals
run
type C_ThreadedSocketServiceRunCallback = Ptr () -> Ptr SocketConnection -> Ptr Object -> Ptr () -> IO CInt Source #
type ThreadedSocketServiceRunCallback = SocketConnection -> Object -> IO Bool Source #
afterThreadedSocketServiceRun :: (IsThreadedSocketService a, MonadIO m) => a -> ThreadedSocketServiceRunCallback -> m SignalHandlerId Source #
mk_ThreadedSocketServiceRunCallback :: C_ThreadedSocketServiceRunCallback -> IO (FunPtr C_ThreadedSocketServiceRunCallback) Source #
onThreadedSocketServiceRun :: (IsThreadedSocketService a, MonadIO m) => a -> ThreadedSocketServiceRunCallback -> m SignalHandlerId Source #
wrap_ThreadedSocketServiceRunCallback :: ThreadedSocketServiceRunCallback -> Ptr () -> Ptr SocketConnection -> Ptr Object -> Ptr () -> IO CInt Source #