Cluster

sealed external interface Cluster : EventEmitter(source)

Properties

Link copied to clipboard
abstract val isMaster: Boolean
Link copied to clipboard
abstract val isPrimary: Boolean

True if the process is a primary. This is determined by the process.env.NODE_UNIQUE_ID. If process.env.NODE_UNIQUE_ID is undefined, then isPrimary is true.

Link copied to clipboard
abstract val isWorker: Boolean

True if the process is not a primary (it is the negation of cluster.isPrimary).

Link copied to clipboard
abstract val SCHED_NONE: Double
Link copied to clipboard
abstract val SCHED_RR: Double
Link copied to clipboard
abstract var schedulingPolicy: Double

The scheduling policy, either cluster.SCHED_RR for round-robin or cluster.SCHED_NONE to leave it to the operating system. This is a global setting and effectively frozen once either the first worker is spawned, or .setupPrimary() is called, whichever comes first.

Link copied to clipboard

After calling .setupPrimary() (or .fork()) this settings object will contain the settings, including the default values.

Link copied to clipboard
abstract val worker: Worker?

A reference to the current worker object. Not available in the primary process.

Link copied to clipboard
abstract val workers: Dict<Worker>?

A hash that stores the active worker objects, keyed by id field. This makes it easy to loop through all the workers. It is only available in the primary process.

Functions

Link copied to clipboard
abstract fun addListener(event: String, listener: Function<Unit>)

events.EventEmitter

abstract fun addListener(event: ClusterEvent.DISCONNECT, listener: (worker: Worker) -> Unit)
abstract fun addListener(event: ClusterEvent.EXIT, listener: (worker: Worker, code: Double, signal: String) -> Unit)
abstract fun addListener(event: ClusterEvent.FORK, listener: (worker: Worker) -> Unit)
abstract fun addListener(event: ClusterEvent.LISTENING, listener: (worker: Worker, address: Address) -> Unit)
abstract fun addListener(event: ClusterEvent.MESSAGE, listener: (worker: Worker, message: Any?, handle: Any) -> Unit)
abstract fun addListener(event: ClusterEvent.ONLINE, listener: (worker: Worker) -> Unit)
abstract fun addListener(event: ClusterEvent.SETUP, listener: (settings: ClusterSettings) -> Unit)
Link copied to clipboard
abstract fun disconnect(callback: () -> Unit = definedExternally)
Link copied to clipboard
abstract fun emit(event: Symbol, vararg args: Any?): Boolean
abstract fun emit(event: String, vararg args: Any?): Boolean
abstract fun emit(event: ClusterEvent.DISCONNECT, worker: Worker): Boolean
abstract fun emit(event: ClusterEvent.FORK, worker: Worker): Boolean
abstract fun emit(event: ClusterEvent.ONLINE, worker: Worker): Boolean
abstract fun emit(event: ClusterEvent.SETUP, settings: ClusterSettings): Boolean
abstract fun emit(event: ClusterEvent.LISTENING, worker: Worker, address: Address): Boolean
abstract fun emit(event: ClusterEvent.EXIT, worker: Worker, code: Number, signal: String): Boolean
abstract fun emit(event: ClusterEvent.MESSAGE, worker: Worker, message: Any?, handle: Server): Boolean
abstract fun emit(event: ClusterEvent.MESSAGE, worker: Worker, message: Any?, handle: Socket): Boolean
Link copied to clipboard

Returns an array listing the events for which the emitter has registered listeners. The values in the array are strings or Symbols.

Link copied to clipboard
abstract fun fork(env: Any? = definedExternally): Worker

Spawn a new worker process.

Link copied to clipboard

Returns the current max listener value for the EventEmitter which is either set by emitter.setMaxListeners(n) or defaults to {@link defaultMaxListeners}.

Link copied to clipboard
abstract fun on(event: String, listener: Function<Unit>)
abstract fun on(event: ClusterEvent.DISCONNECT, listener: (worker: Worker) -> Unit)
abstract fun on(event: ClusterEvent.EXIT, listener: (worker: Worker, code: Double, signal: String) -> Unit)
abstract fun on(event: ClusterEvent.FORK, listener: (worker: Worker) -> Unit)
abstract fun on(event: ClusterEvent.LISTENING, listener: (worker: Worker, address: Address) -> Unit)
abstract fun on(event: ClusterEvent.MESSAGE, listener: (worker: Worker, message: Any?, handle: Any) -> Unit)
abstract fun on(event: ClusterEvent.ONLINE, listener: (worker: Worker) -> Unit)
abstract fun on(event: ClusterEvent.SETUP, listener: (settings: ClusterSettings) -> Unit)
Link copied to clipboard
abstract fun once(event: String, listener: Function<Unit>)
abstract fun once(event: ClusterEvent.DISCONNECT, listener: (worker: Worker) -> Unit)
abstract fun once(event: ClusterEvent.EXIT, listener: (worker: Worker, code: Double, signal: String) -> Unit)
abstract fun once(event: ClusterEvent.FORK, listener: (worker: Worker) -> Unit)
abstract fun once(event: ClusterEvent.LISTENING, listener: (worker: Worker, address: Address) -> Unit)
abstract fun once(event: ClusterEvent.MESSAGE, listener: (worker: Worker, message: Any?, handle: Any) -> Unit)
abstract fun once(event: ClusterEvent.ONLINE, listener: (worker: Worker) -> Unit)
abstract fun once(event: ClusterEvent.SETUP, listener: (settings: ClusterSettings) -> Unit)
Link copied to clipboard
abstract fun prependListener(event: String, listener: Function<Unit>)
abstract fun prependListener(event: ClusterEvent.DISCONNECT, listener: (worker: Worker) -> Unit)
abstract fun prependListener(event: ClusterEvent.EXIT, listener: (worker: Worker, code: Double, signal: String) -> Unit)
abstract fun prependListener(event: ClusterEvent.FORK, listener: (worker: Worker) -> Unit)
abstract fun prependListener(event: ClusterEvent.LISTENING, listener: (worker: Worker, address: Address) -> Unit)
abstract fun prependListener(event: ClusterEvent.MESSAGE, listener: (worker: Worker, message: Any?, handle: Any?) -> Unit)
abstract fun prependListener(event: ClusterEvent.ONLINE, listener: (worker: Worker) -> Unit)
abstract fun prependListener(event: ClusterEvent.SETUP, listener: (settings: ClusterSettings) -> Unit)
Link copied to clipboard
abstract fun prependOnceListener(event: String, listener: Function<Unit>)
abstract fun prependOnceListener(event: ClusterEvent.DISCONNECT, listener: (worker: Worker) -> Unit)
abstract fun prependOnceListener(event: ClusterEvent.EXIT, listener: (worker: Worker, code: Double, signal: String) -> Unit)
abstract fun prependOnceListener(event: ClusterEvent.FORK, listener: (worker: Worker) -> Unit)
abstract fun prependOnceListener(event: ClusterEvent.LISTENING, listener: (worker: Worker, address: Address) -> Unit)
abstract fun prependOnceListener(event: ClusterEvent.MESSAGE, listener: (worker: Worker, message: Any?, handle: Any) -> Unit)
abstract fun prependOnceListener(event: ClusterEvent.ONLINE, listener: (worker: Worker) -> Unit)
abstract fun prependOnceListener(event: ClusterEvent.SETUP, listener: (settings: ClusterSettings) -> Unit)
Link copied to clipboard

By default EventEmitters will print a warning if more than 10 listeners are added for a particular event. This is a useful default that helps finding memory leaks. The emitter.setMaxListeners() method allows the limit to be modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

Link copied to clipboard
abstract fun setupMaster(settings: ClusterSettings = definedExternally)
Link copied to clipboard
abstract fun setupPrimary(settings: ClusterSettings = definedExternally)

setupPrimary is used to change the default 'fork' behavior. Once called, the settings will be present in cluster.settings.