Package org.gnome.gio
Class ThreadedSocketService
java.lang.Object
io.github.jwharm.javagi.base.ProxyInstance
org.gnome.gobject.TypeInstance
org.gnome.gobject.GObject
org.gnome.gio.SocketListener
org.gnome.gio.SocketService
org.gnome.gio.ThreadedSocketService
- All Implemented Interfaces:
Proxy
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
Gio.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
Gio.ThreadedSocketService::run
, or subclass and override the default
handler.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Inner class implementing a builder pattern to construct a GObject with properties.static interface
Functional interface declaration of theRunCallback
callback.static class
Nested classes/interfaces inherited from class org.gnome.gio.SocketService
SocketService.IncomingCallback, SocketService.SocketServiceClass
Nested classes/interfaces inherited from class org.gnome.gio.SocketListener
SocketListener.EventCallback, SocketListener.SocketListenerClass
Nested classes/interfaces inherited from class org.gnome.gobject.GObject
GObject.NotifyCallback, GObject.ObjectClass
-
Constructor Summary
ConstructorDescriptionThreadedSocketService
(int maxThreads) Creates a newGThreadedSocketService
with no listeners.ThreadedSocketService
(MemorySegment address) Create a ThreadedSocketService proxy instance for the provided memory address. -
Method Summary
Modifier and TypeMethodDescriptionprotected ThreadedSocketService
asParent()
Returns this instance as if it were its parent type.static ThreadedSocketService.Builder
<? extends ThreadedSocketService.Builder> builder()
AThreadedSocketService.Builder
object constructs aThreadedSocketService
with the specified properties.boolean
emitRun
(SocketConnection connection, @Nullable GObject sourceObject) Emits the "run" signal.static MemoryLayout
The memory layout of the native struct.static Type
getType()
Get the GType of the ThreadedSocketService classonRun
(ThreadedSocketService.RunCallback handler) The ::run signal is emitted in a worker thread in response to an incoming connection.protected boolean
run
(SocketConnection connection, GObject sourceObject) Methods inherited from class org.gnome.gio.SocketService
emitIncoming, incoming, isActive, onIncoming, start, stop
Methods inherited from class org.gnome.gio.SocketListener
accept, acceptAsync, acceptFinish, acceptSocket, acceptSocketAsync, acceptSocketFinish, addAddress, addAnyInetPort, addInetPort, addSocket, changed, close, emitEvent, event, onEvent, setBacklog
Methods inherited from class org.gnome.gobject.GObject
addToggleRef, addWeakPointer, bindProperty, bindProperty, bindProperty, bindPropertyFull, bindPropertyFull, bindPropertyWithClosures, bindPropertyWithClosures, compatControl, connect, connect, connect, constructed, disconnect, dispatchPropertiesChanged, dispose, dupData, dupQdata, emit, emitNotify, finalize_, forceFloating, freezeNotify, get, getData, getProperty, getProperty, getProperty, getQdata, getv, interfaceFindProperty, interfaceInstallProperty, interfaceListProperties, isFloating, newInstance, newInstance, newInstance, newInstance, newv, notify_, notify_, notifyByPspec, onNotify, ref, refSink, removeToggleRef, removeWeakPointer, replaceData, replaceQdata, runDispose, set, setData, setDataFull, setProperty, setProperty, setProperty, setQdata, setQdataFull, setv, stealData, stealQdata, takeRef, thawNotify, unref, watchClosure, weakRef, weakUnref, withProperties
Methods inherited from class org.gnome.gobject.TypeInstance
callParent, callParent, getPrivate, readGClass, writeGClass
Methods inherited from class io.github.jwharm.javagi.base.ProxyInstance
equals, handle, hashCode
-
Constructor Details
-
ThreadedSocketService
Create a ThreadedSocketService proxy instance for the provided memory address.- Parameters:
address
- the memory address of the native object
-
ThreadedSocketService
public ThreadedSocketService(int maxThreads) Creates a newGThreadedSocketService
with no listeners. Listeners must be added with one of theGSocketListener
"add" methods.- Parameters:
maxThreads
- the maximal number of threads to execute concurrently handling incoming clients, -1 means no limit
-
-
Method Details
-
getType
-
getMemoryLayout
The memory layout of the native struct.- Returns:
- the memory layout
-
asParent
Returns this instance as if it were its parent type. This is mostly synonymous to the Javasuper
keyword, but will set the native typeclass function pointers to the parent type. When overriding a native virtual method in Java, "chaining up" withsuper.methodName()
doesn't work, because it invokes the overridden function pointer again. To chain up, callasParent().methodName()
. This will call the native function pointer of this virtual method in the typeclass of the parent type.- Overrides:
asParent
in classSocketService
-
run
-
onRun
public SignalConnection<ThreadedSocketService.RunCallback> onRun(ThreadedSocketService.RunCallback handler) The ::run signal is emitted in a worker thread in response to an incoming connection. This thread is dedicated to handlingconnection
and may perform blocking IO. The signal handler need not return until the connection is closed.- Parameters:
handler
- the signal handler- Returns:
- a signal handler ID to keep track of the signal connection
- See Also:
-
emitRun
Emits the "run" signal. SeeonRun(org.gnome.gio.ThreadedSocketService.RunCallback)
. -
builder
AThreadedSocketService.Builder
object constructs aThreadedSocketService
with the specified properties. Use the variousset...()
methods to set properties, and finish construction withThreadedSocketService.Builder.build()
.
-