abstract class PollingSystem extends AnyRef
Represents a stateful system for managing and interacting with a polling system. Polling systems are typically used in scenarios such as handling multiplexed blocking I/O or other event-driven systems, where one needs to repeatedly check (or "poll") some condition or state, blocking up to some timeout until it is ready.
This class abstracts the general components and actions of a polling system, such as:
- The user-facing interface (API) which interacts with the outside world
- The thread-local data structure used for polling, which keeps track of the internal state of the system and its events
- The lifecycle management methods, such as creating and closing the polling system and its components
- The runtime interaction methods, such as polling events and interrupting the process
- Source
- PollingSystem.scala
- Alphabetic
- By Inheritance
- PollingSystem
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new PollingSystem()
Type Members
Abstract Value Members
- abstract def close(): Unit
Closes the polling system.
- abstract def closePoller(poller: Poller): Unit
Closes a specific poller.
Closes a specific poller.
- poller
the poller to be closed.
- abstract def interrupt(targetThread: Thread, targetPoller: Poller): Unit
Interrupts a specific target poller running on a specific target thread.
Interrupts a specific target poller running on a specific target thread.
- targetThread
is the thread where the target poller is running.
- targetPoller
is the poller to be interrupted.
- abstract def makeApi(ctx: PollingContext[Poller]): Api
Creates a new instance of the user-facing interface.
- abstract def makePoller(): Poller
Creates a new instance of the thread-local data structure used for polling.
Creates a new instance of the thread-local data structure used for polling.
- returns
an instance of the poller
Poller
.
- abstract def metrics(poller: Poller): PollerMetrics
Returns a handle to access metrics associated with the specified poller.
Returns a handle to access metrics associated with the specified poller.
The returned
PollerMetrics
provides access to live counts of submitted, succeeded, errored, and canceled operations for accept, connect, read, and write events. It also includes counts of outstanding operations and the total number of operations.- poller
The poller for which the metrics handle is being retrieved.
- returns
A
PollerMetrics
instance that can be used to query the current metrics for the poller.
- abstract def needsPoll(poller: Poller): Boolean
- returns
whether poll should be called again (i.e., there are more events to be polled)
- abstract def poll(poller: Poller, nanos: Long): PollResult
Blocks the thread until an event is polled, the timeout expires, or interrupted.
Blocks the thread until an event is polled, the timeout expires, or interrupted.
- poller
the thread-local Poller used to poll events.
- nanos
the maximum duration for which to block, where
nanos == -1
indicates to block indefinitely.- returns
whether any ready events were polled and should be handled with processReadyEvents. If result is incomplete, then poll should be called again after processReadyEvents.
- abstract def processReadyEvents(poller: Poller): Boolean
Processes ready events e.g.
Processes ready events e.g. collects their results and resumes the corresponding tasks.
- poller
the thread-local Poller with ready events
- returns
whether any of the ready events caused tasks to be rescheduled on the runtime
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()